检查目标时出错:期望concatenate_1具有形状(1,)但是得到了具有形状的数组(851,)

问题描述 投票:1回答:1

我有一些与keras连接的维度问题。似乎模型的输出数组(None,851)与错误消息中所需的维度不同。我得到的是:

input_img = Input(shape=(32, 100, 1))

conv1 = Conv2D(filters = 64, kernel_size=(5, 5), strides=1, padding="same", activation="relu")(input_img)
maxpool1 = MaxPooling2D(pool_size=(2, 2), strides=None, padding='valid', data_format=None)(conv1)

conv2 = Conv2D(filters = 128, kernel_size=(5, 5), strides=1, padding="same", activation="relu")(maxpool1)
maxpool2 = MaxPooling2D(pool_size=(2, 2), strides=None, padding='valid', data_format=None)(conv2)

conv3 = Conv2D(filters = 256, kernel_size=(3, 3), strides=1, padding="same", activation="relu")(maxpool2)
maxpool3 = MaxPooling2D(pool_size=(2, 2), strides=None, padding='valid', data_format=None)(conv3)

conv4 = Conv2D(filters = 512, kernel_size=(3, 3), strides=1, padding="same", activation="relu")(maxpool3)
conv5 = Conv2D(filters = 512, kernel_size=(3, 3), strides=1, padding="same", activation="relu")(conv4)
flat1 = Flatten(data_format=None)(conv5)
dense1 = Dense(units = 4096, activation = "relu")(flat1)
dense2 = Dense(units = 4096)(dense1)

towers = [Dense(units = 37, activation='softmax')(dense2) for i in range (23)]
output = concatenate(towers, axis = -1)

char = Model(input=input_img, output=output)

Here is the summary the model

当我尝试适合我的模型时,我收到以下消息:ValueError:检查目标时出错:期望concatenate_1有形状(1,)但是有形状的数组(851,)

我不明白为什么concatenate_1应该有shape(1,)而不是(851,)或(None,851)我的target_train的大小是(867,851),所以。

有人遇到过这种错误吗?

非常感谢你

python keras keras-layer
1个回答
0
投票

问题出在你的target_train,你打算学习的期望输出。连接后的网络有23 * 37 - > 851,在摘要中是(None, 851),其中None是动态批量大小。

您需要研究如何将target_train传递给.fit函数。模型输出为851,但训练循环代替1个单一目标。

© www.soinside.com 2019 - 2024. All rights reserved.