Python 无法在keras中连接两个输入层。
我正在使用以下代码进行尝试:Python 无法在keras中连接两个输入层。,python,tensorflow,keras,resnet,Python,Tensorflow,Keras,Resnet,我正在使用以下代码进行尝试: import tensorflow as tf from keras.layers import Input, Dense from keras.models import Model, Sequential from keras.layers import Conv2D, Concatenate from keras.utils.vis_utils import plot_model if __name__ == '__main__': imgRow
import tensorflow as tf
from keras.layers import Input, Dense
from keras.models import Model, Sequential
from keras.layers import Conv2D, Concatenate
from keras.utils.vis_utils import plot_model
if __name__ == '__main__':
imgRows = imgCols = 28
print ("ImgRow and imgCols " , imgRows, imgCols)
inputLayer = Input(shape=( 1,28,28))
conv1 = Conv2D(64,(3,3),strides=1, padding="same", activation='relu') (inputLayer)
#Residual 1
skip = Conv2D(128, (1,1), strides=1, padding="same", activation='relu') (conv1)
conv1 = Conv2D(128, (3,3), strides=3, padding="same", activation='relu') (skip)
conv1 = Conv2D(128, (3,3), strides=3, padding="same", activation='relu') (conv1)
r1= Concatenate([skip, conv1])
#residual 2
conv1 = Conv2D(128, (3,3), strides=3, padding="same", activation='relu') (r1)
conv1 = Conv2D(128, (3,3), strides=3, padding="same", activation='relu') (conv1)
conv1= Concatenate([r1, conv1])
# Residual 3
skip = Conv2D(256, (1,1), strides=1, padding="same", activation='relu') (conv1)
conv1 = Conv2D(256, (3,3), strides=3, padding="same", activation='relu') (conv1)
conv1 = Conv2D(256, (3,3), strides=3, padding="same", activation='relu') (conv1)
conv1= Concatenate([skip, conv1])
out = Conv2D(1, (1,1), strides=1, padding="same", activation='sigmoid') (conv1)
#model = Sequential()
#model.add (inputLayer)
#model.add ( conv1)
model = Model(input=inputLayer, output=conv1)
model.compile(optimizer=Nadam(lr=1e-5), loss="mean_square_error")
plot_model (model, to_file="./keestu_model.png", show_shapes=True)
我得到以下错误:
错误消息是:
ValueError: Layer conv2d_5 was called with an input that isn't a
symbolic tensor. Received type: <class 'keras.layers.merge.Concatenate'>.
Full input: [<keras.layers.merge.Concatenate object at 0x7fd543841590>].
All inputs to the layer should be tensors.
ValueError:调用层conv2d_5时使用的输入不是
符号张量。收到的类型:。
完整输入:[]。
层的所有输入都应该是张量。
问题
错误消息对我来说非常清楚,第5层希望它的输入是张量对象,而不是串联对象。但是我如何修复它呢?这是因为
Concatenate
是一个具有两个API版本的层类:
创建Concatenate的新实例并应用于给定的张量。这是标准的函数式API样式Concatenate()([tensor1,tensor2])
将实现相同的功能,但会为您创建一个隐式实例。从: 连接(输入,轴=-1):连接层的功能接口concatenate([tensor1,tensor2])