gpt4 book ai didi

python - ValueError : Shapes (None, 1) 和 (None, 3) 不兼容

转载 作者:行者123 更新时间:2023-12-04 11:09:30 29 4
gpt4 key购买 nike

我有一个 3 维音频文件数据集,其中 X.shape(329,20,85) .我想运行一个简单的准系统模型,所以请不要挑剔并只解决手头的问题。这是代码:

model = tf.keras.models.Sequential()
model.add(tf.keras.layers.LSTM(32, return_sequences=True, stateful=False, input_shape = (20,85,1)))
model.add(tf.keras.layers.LSTM(20))
model.add(tf.keras.layers.Dense(nb_classes, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=["accuracy"])
model.summary()
print("Train...")
model.fit(X_train, y_train, batch_size=batch_size, nb_epoch=50, validation_data=(X_test, y_test))
但是后来我遇到了标题中提到的错误: ValueError: Shapes (None, 1) and (None, 3) are incompatible这是 model.summary()
Model: "sequential_13"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_21 (LSTM) (None, 20, 32) 15104
_________________________________________________________________
lstm_22 (LSTM) (None, 20) 4240
_________________________________________________________________
dense_8 (Dense) (None, 3) 63
=================================================================
Total params: 19,407
Trainable params: 19,407
Non-trainable params: 0
_________________________________________________________________
Train...
为此,我关注了 this将 Tensorflow 发布并更新到最新版本,但问题仍然存在。 This post完全不相关并且非常不可靠。 This帖子虽然有点相关,但暂时没有得到答复。
更新 1.0:
我强烈认为这个问题与最后的 Dense有关。我将 nb_classes 传递为 3 的层,因为我正在对 y 中的 3 个类别进行分类.
所以我改了 Dense层的 nb_classes到 1,它运行模型并给我这个输出,我肯定这是错误的。
Train...
9/9 [==============================] - 2s 177ms/step - loss: 0.0000e+00 - accuracy: 0.1520 - val_loss: 0.0000e+00 - val_accuracy: 0.3418

<tensorflow.python.keras.callbacks.History at 0x7f50f1dcebe0>
更新 2.0:
我一热编码 y s 并解决了形状问题。但是现在上面的输出是 <tensorflow.python.keras.callbacks.History at 0x7f50f1dcebe0>持续存在。有什么帮助吗?或者我应该为此发布一个新问题?感谢所有的帮助。
我应该如何进行,或者我应该改变什么?

最佳答案

第一个问题是 LSTM input_shape。 input_shape = (20,85,1) .

来自文档:https://keras.io/layers/recurrent/

LSTM 层期望 具有形状(batch_size、timesteps、input_dim)的 3D 张量。
model.add(tf.keras.layers.Dense(nb_classes, activation='softmax')) - 这表明您正在进行多类分类。

所以,您需要您的 y_trainy_test必须是one-hot-encoded。这意味着它们必须具有维度 (number_of_samples, 3) ,其中 3表示类的数量。

您需要申请 tensorflow.keras.utils.to_categorical给他们。

y_train = to_categorical(y_train, 3)
y_test = to_categorical(y_test, 3)

引用: https://www.tensorflow.org/api_docs/python/tf/keras/utils/to_categorical
tf.keras.callbacks.History() - 此回调会自动应用于每个 Keras 模型。 History 对象由模型的 fit 方法返回。

引用: https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/History

关于python - ValueError : Shapes (None, 1) 和 (None, 3) 不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61550026/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com