Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Keras ValueError:调用层conv2d_41时使用的输入为';t是一个符号张量。层的所有输入都应该是张量_Keras_Keras Layer_Transfer Learning - Fatal编程技术网

Keras ValueError:调用层conv2d_41时使用的输入为';t是一个符号张量。层的所有输入都应该是张量

Keras ValueError:调用层conv2d_41时使用的输入为';t是一个符号张量。层的所有输入都应该是张量,keras,keras-layer,transfer-learning,Keras,Keras Layer,Transfer Learning,我尝试使用主干的自定义输入进行转移学习: (我无法正常转移学习,因为我的输入形状是N*N*8,所以我需要添加小网络_1以达到N*N*3) 我的代码: 模型1.添加(模型2) 型号1是我的小型网络: 型号2为Mobilenet或VGG16或Densenet model_1 = Sequential() model_1.add(InputLayer(input_shape=(size, size, F), name="InputLayer")) model_1.add(Convolution2D(3

我尝试使用主干的自定义输入进行转移学习:

(我无法正常转移学习,因为我的输入形状是N*N*8,所以我需要添加小网络_1以达到N*N*3)

我的代码:

模型1.添加(模型2)

型号1是我的小型网络: 型号2为Mobilenet或VGG16或Densenet

model_1 = Sequential()
model_1.add(InputLayer(input_shape=(size, size, F), name="InputLayer"))
model_1.add(Convolution2D(3, 128, padding = 'same'))

from keras.applications.densenet import DenseNet169
model_2=DenseNet169(weights='imagenet',include_top=False)

model_2.layers.pop(0) # remove input_layer of model_2 
model_1.add(model_2) # output model_1 is input model_2?

model_1 = GlobalAveragePooling2D()(model_1)
model_1 = Dropout(0.2)(model_1)
model_1 = Dense(256*256, activation='softmax')(model_1)
model_1 = Reshape(256, 256)(model_1)

我有错误:

ValueError: Layer global_average_pooling2d_3 was called with an input that isn't a symbolic tensor. Received type: <class 'keras.engine.sequential.Sequential'>. Full input: [<keras.engine.sequential.Sequential object at 0x7f74f6621d68>]. All inputs to the layer should be tensors.
ValueError:使用非符号张量的输入调用了Layer global_average_pooling2d_3。收到的类型:。完整输入:[]。层的所有输入都应该是张量。

我的代码怎么了?

全局平均池2D是一个对张量或多维数组执行操作的层。因此,传递像DenseNet这样的模型架构会抛出一个错误,因为模型不知道它在看什么。模型架构文件与张量完全不同


要实现我认为您正试图实现的目标,请运行DenseNet,然后将DenseNet的输出传递到您正在创建的模型中,而不是传递模型本身。祝你好运

全局平均池2D是对张量或多维数组执行操作的层。因此,传递像DenseNet这样的模型架构会抛出一个错误,因为模型不知道它在看什么。模型架构文件与张量完全不同


要实现我认为您正试图实现的目标,请运行DenseNet,然后将DenseNet的输出传递到您正在创建的模型中,而不是传递模型本身。祝你好运

谢谢你的回答。你是说像这样的代码:``model_2.layers.pop(0)\\删除model_2的输入层model_1.add(model_2)``之后是``model=globalaveragepoolig2d()(model_1.output)``啊,我想出来了。删除弹出命令应该可以修复它。如果有帮助,请标记为正确!抱歉,我在网上查了一下,发现其他模型在没有弹出第一层的情况下运行良好。嗯,但我的输入超过3维(N*N*8),因此,我需要小网络(网络1)在转移学习之前达到3维。网络。输出是网络的输入。请输入您的答案。你是说像这样的代码:``model_2.layers.pop(0)\\删除model_2的输入层model_1.add(model_2)``之后是``model=globalaveragepoolig2d()(model_1.output)``啊,我想出来了。删除弹出命令应该可以修复它。如果有帮助,请标记为正确!抱歉,我在网上查了一下,发现其他模型在没有弹出第一层的情况下运行良好。嗯,但我的输入超过3维(N*N*8),因此,我需要小网络(网络1)在转移学习之前达到3维。网络\输出为网络\ 2的输入
ValueError: Layer global_average_pooling2d_3 was called with an input that isn't a symbolic tensor. Received type: <class 'keras.engine.sequential.Sequential'>. Full input: [<keras.engine.sequential.Sequential object at 0x7f74f6621d68>]. All inputs to the layer should be tensors.