我正在尝试实现一个神经网络,在其中我将一个完全连接的神经网络与一个卷积神经网络合并/连接。但是当我拟合模型时,出现以下错误:
ValueError:所有输入数组 (x) 应具有相同数量的样本。得到数组形状:[(1, 100, 60, 4500), (100, 4500)]
我有两个不同的输入:
图像(尺寸:1,100,60,4500)其中 1 是通道,100:样本数,60*4500(我的图像的尺寸)。这是我的卷积神经网络
位置(维度:100,4500):其中 100 是指样本。
我的输出尺寸是 100,2。
我的神经网络的代码是:
###Convolution neural network
b1 = Sequential()
b1.add(Conv2D(128*2, kernel_size=3,activation='relu',data_format='channels_first',
input_shape=(100,60,4500)))
b1.add(Conv2D(128*2, kernel_size=3, activation='relu'))
b1.add(Dropout(0.2))
b1.add(Conv2D(128*2, kernel_size=4, activation='relu'))
b1.add(Dropout(0.2))
b1.add(Flatten())
b1.summary()
###Fully connected feed forward neural network
b2 = Sequential()
b2.add(Dense(64, input_shape = (4500,), activation='relu'))
b2.add(Dropout(0.1))
b2.summary()
model = Sequential()
###Concatenating the two networks
concat = concatenate([b1.output, b2.output], axis=-1)
x = Dense(256, activation='relu', kernel_initializer='normal')(concat)
x = Dropout(0.25)(x)
output = Dense(2, activation='softmax')(x)
model = Model([b1.input, b2.input], [output])
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adam(),
metrics=['accuracy'])
history = model.fit([image, positions], Ytest, batch_size=10,
epochs=1,
verbose=1)
另外,我的“图像”数组是 4 维的原因是因为一开始它只是 (100,60,4500) 但后来我遇到了以下错误:
ValueError:检查输入时出错:预期 conv2d_10_input 有 4 个维度,但得到了形状为 (100、60、4500) 的数组
在谷歌搜索后,我发现它也需要 # of channels 作为输入。在我添加 # of channel 之后,这个错误就消失了,但后来我遇到了我在开头提到的另一个错误。
那么有人能告诉我如何解决这个错误(我在一开始指定的那个)吗?帮助将不胜感激。