【问题标题】:Tensorflow Shape mismatchTensorFlow 形状不匹配
【发布时间】:2021-08-31 13:39:33
【问题描述】:

我正在使用 tensorflow 构建多输出模型。 我遇到了错误

ValueError: Shape mismatch: The shape of labels (received (3600000,))
should equal the shape of logits except
for the last dimension (received (10, 360000)).

我必须输出 360000 个包含 25 个类的数据。 我的输入范围为 [0, 1]。 我的输入是这样的

[x1, x2, x3, ....., x1080000]

我的输出是这样的

[y1, y2, y3, ....., y360000]

另外,我的输入数据集的形状是 (66, 1080000),我的输出数据集是 (66, 360000)

这是我的完整代码。

from tensorflow.keras.layers import Input, Dense
from tensorflow.keras.models import Model
inputs = Input(shape=(1080000, ))
x = Dense(64, activation='relu')(inputs)
x = Dense(64, activation='relu')(x)
outputs =  Dense(360000, activation='softmax')(x)

model = Model(inputs=inputs, outputs=outputs, name='test')
model.compile(optimizer='adam',
             loss='sparse_categorical_crossentropy',
             metrics=['sparse_categorical_accuracy'])
model.fit(X, y, batch_size=10, epochs=50)

我不明白为什么标签与 logits 不同。 如何防止错误发生?

【问题讨论】:

  • 360000条数据是什么?我的意思是,您是否有 360,000 个不同的类别需要预测?它们是一次性编码的吗?
  • 我必须打印 360000 个数据,包含 25 个类。

标签: tensorflow


【解决方案1】:

这可能与您的损失函数有关。如果您尝试使用categorical_crossentropy 而不是sparse_categorical_crossentropy,会发生什么情况?

model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['categorical_accuracy'])

这个答案增加了更多细节 - https://stackoverflow.com/a/58402308/177154

【讨论】:

  • 它确实有效,但损失和准确性不起作用。
猜你喜欢
  • 2020-10-05
  • 1970-01-01
  • 2021-12-29
  • 2021-12-13
  • 1970-01-01
  • 2019-05-25
  • 1970-01-01
  • 2018-12-05
  • 2020-03-09
相关资源
最近更新 更多