【问题标题】:ValueError: Error when checking target: expected dense_2 to have shape (2,) but got array with shape (75,)ValueError:检查目标时出错:预期dense_2的形状为(2,),但数组的形状为(75,)
【发布时间】:2021-03-15 19:10:30
【问题描述】:
model = Sequential()
model.add(TimeDistributed(Conv2D(64, (3, 3), activation='relu'),input_shape=(10, 255, 255,1)))
model.add(TimeDistributed(Conv2D(64, (3, 3), activation='relu')))
model.add(TimeDistributed(Flatten()))
model.add(LSTM(10, activation='relu', return_sequences=False))
model.add(Dense(1024, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(2, activation='sigmoid'))
model.compile('adam', loss='categorical_crossentropy')

model.fit(train_dataset_new, train_labels,
                                    epochs=25,
                                    batch_size=10,
                                   validation_data=(validation_dataset_new,validation_labels))
                                    

你好,

我在手头的主题上苦苦挣扎。 我将从我的目标开始:

我想用一系列图像(视频)训练以下模型 - 准确地说是 10 个。

我的逻辑: 为此,我创建了一个视频数据库并将每个视频中的 10 帧提取到一个 np.array 对象中。每个帧的大小为 (255,255) 且为灰度。 总结:输入形状为(255,255,1)。

我确定我遗漏了有关 TimeDistribution 层\LSTM 层的一些内容,并且在我寻找的任何来源上都找不到解决方案(并且我已经尝试过)

我已经调试了代码并验证了以下内容:

train_dataset_new = (75,10,255,255,1) #(75是我拥有的火车视频数量) validation_dataset_new = (19,10,255,255,1) #(19是我拥有的火车视频数量)

我对这个问题的理解: 如标题中所述,我的 Dense 层期望输入大小,但我将整个示例域 (75) 输入到我的网络中,我无法确定我是否适合错误或我的模型架构错误(我想请注意,这是我在网上找到的一个基本架构,只是用来探索这个主题)

很高兴获得有关此事的任何帮助\方向。 如果需要更多数据,请告知我是这个论坛的新手。

干杯!

【问题讨论】:

    标签: python tensorflow keras conv-neural-network


    【解决方案1】:

    查看目标标签的形状。当使用(随机生成的)形状为(75,10,255,255,1) 的训练数据和形状为(75,2) 的目标标签运行您的代码时,它似乎对我有用,使用 TF2.2 和 Keras 2.4.3。该错误可能只是说网络的输出和目标标签形状不匹配,但我必须说如果是这样,这不是一个非常明确的错误消息。

    【讨论】:

    • 谢谢!,问题出在我的标签的形状上 - 由于某种原因忘记检查了 xD。感谢您的帮助。
    • @TheCoon 没问题!考虑将我的答案标记为已接受的答案
    猜你喜欢
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多