python - Keras 期望 dense_13 具有 2 个维度

标签 python keras lstm

我从 Keras 收到非常困惑的错误消息。我使用以下模型并将形状为 (num_examples, n, 1) 的输入传递给它。

def create_model():
    model = Sequential()
    model.add(LSTM(64, input_shape=(n,1), return_sequences=False))
    model.add(Dense(units=n, activation='linear'))
    return model

我收到此错误消息: ValueError:检查目标时出错:预期 dense_16 具有 2 个维度,但得到形状为 (11030, 50, 1) 的数组

但这怎么可能呢?如果我使用 model.summary(),它表明 LSTM 输出具有以下形状:(None, 64)。那么它如何将形状为 (11030, 50, 1) 的数组传递给 Dense 层?

此外,如果我尝试在 LSTM 和 Dense 之间添加 model.add(Flatten()),我会收到此错误:ValueError: Input 0 is incompatible with layer flatten_3: expected min_ndim =3,发现 ndim=2

那么,它将 2D 传递给 Flatten,但它怎么可能将 3D 传递给 Dense?

最佳答案

问题不在于您的模型,而在于目标,即您提供的y 标签。您不匹配,因为您的模型输出 (batch_size, n) 而您给出的是 (batch_size, 50, 1)

假设 n=50 然后您需要将目标标签压缩到 2 维并删除 1。y_train = y_train.squeeze() 应该可以解决形状不匹配问题。

关于python - Keras 期望 dense_13 具有 2 个维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52162609/

相关文章:

python - 在 Django 1.6.x 中如何在 View 中获取关联模型的数据?

python - 调用 pylab.show 时如何将焦点保持在命令提示符上?

Python 在 Macbook pro m1 max 上运行错误(在 Tensorflow 上运行)

python - 使用生成器从成批的 .npy 文件训练 Keras 模型?

python - Tensorflow raw_rnn 从嵌入矩阵中检索形状为 BATCH x DIM 的张量

python - 如何将向量中的数值和分类值组合为 LSTM 的输入?

python - 无效的 URI 方案 Python、MongoDB 错误

python - 如何在 CuPy 中分配倾斜的 2D 内存?

python - 使用 Keras 预训练 CNN 微调。如何卡住批归一化?

python - Keras LSTM 准确率太高