首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角星中的resnet50和densenet121系综

角星中的resnet50和densenet121系综
EN

Stack Overflow用户
提问于 2018-03-06 17:30:54
回答 1查看 1.3K关注 0票数 1

我想做一个resnet50和desnsenet121的合奏,但是得到了一个错误:

图断开:不能获得张量张量(“input_8:0”,shape=(?,224,224,3),dtype=float32)在"input_8“层的值。没有问题地访问了以下前几个层:[]

下面是我的集合代码:

代码语言:javascript
复制
from keras import applications
from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPool2D
from keras.models import Model, Input
#from keras.engine.topology import Input
from keras.layers import Average

def resnet50():
    base_model = applications.resnet50.ResNet50(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
    last = base_model.output
    x = Flatten()(last)
    x = Dense(2000, activation='relu')(x)
    preds = Dense(200, activation='softmax')(x)
    model = Model(base_model.input, preds)
    return model

def densenet121():
    base_model = applications.densenet.DenseNet121(weights='imagenet', include_top=False, input_shape=(224,224, 3))
    last = base_model.output
    x = Flatten()(last)
    x = Dense(2000, activation='relu')(x)
    preds = Dense(200, activation='softmax')(x)
    model = Model(base_model.input, preds)
    return model

resnet50_model = resnet50()
densenet121_model = densenet121()
ensembled_models = [resnet50_model,densenet121_model]
def ensemble(models,model_input):
    outputs = [model.outputs[0] for model in models]
    y = Average()(outputs)
    model = Model(model_input,y,name='ensemble')
    return model

model_input = Input(shape=(224,224,3))
ensemble_model = ensemble(ensembled_models,model_input)

我认为原因是当我将reset50和densenet121组合在一起时,它们有自己的输入层,尽管我使输入形状是相同的。不同的输入层会导致冲突。这只是我的猜测,我不知道如何解决

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-07 04:17:30

您可以在创建基本模型时设置input_tensor=model_input

代码语言:javascript
复制
def resnet50(model_input):
    base_model = applications.resnet50.ResNet50(weights='imagenet', include_top=False, input_tensor=model_input)
    # ...

def densenet121(model_input):
    base_model = applications.densenet.DenseNet121(weights='imagenet', include_top=False, input_tensor=model_input)
    # ...

model_input = Input(shape=(224, 224, 3))
resnet50_model = resnet50(model_input)
densenet121_model = densenet121(model_input)

然后,基本模型将使用提供的model_input张量,而不是创建它们自己的独立输入张量。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49136762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档