python - 无法挤压 dim[1],期望维度为 1,得到 499

标签 python keras lstm

我正在尝试制作一个自动编码器,但遇到了上述错误。在 Stack Exchange 上查看与此有关的其他帖子没有帮助。

这里是完整的错误:

InvalidArgumentError: Can not squeeze dim[1], expected a dimension of 1, got 499
 [[{{node metrics_12/acc/Squeeze}}]]
 [[{{node ConstantFoldingCtrl/loss_12/time_distributed_6_loss/broadcast_weights/assert_broadcastable/AssertGuard/Switch_0}}]]

我可以编译我的模型。在这里:

Layer (type) Output Shape Param #
================================================================= lambda_7 (Lambda) (None, 499, 22) 0
_________________________________________________________________ cu_dnnlstm_14 (CuDNNLSTM) (None, 300) 388800
_________________________________________________________________ repeat_vector_12 (RepeatVect (None, 499, 300) 0
_________________________________________________________________ cu_dnnlstm_15 (CuDNNLSTM) (None, 499, 50) 70400
_________________________________________________________________ time_distributed_6 (TimeDist (None, 499, 22) 1122
================================================================= Total params: 460,322 Trainable params: 460,322 Non-trainable params: 0

lambda 层采用形状为 (1,499) 的填充序列,并将其转换为具有 22 个可能值的 onehot。然后,我将其传递给一个编码 CuDNNLSTM、一个重复向量、另一个 CuDNNLSTM,然后是一个具有 softmax 激活的时间分布密集层。

我使用:

model.compile('rmsprop', 'sparse_categorical_crossentropy', metrics=['acc'])

并且:

model.fit(s_min_one, s_min_one,
   batch_size=batchS,
   epochs=epochS,
   verbose = 1,  
   shuffle=True)

这给了我错误。

我使用稀疏分类,以便我的数据可以采用整数格式,取值介于 0 和 21 之间(对于 22 个特征)。而且我不明白为什么错误期望任何东西的维度为 1。就好像它要我翻转我的列和行一样?

最佳答案

您的问题与输出的形状有关。 sparse_categorical_crossentropy 需要整数目标(参见 the documentation:“使用 sparse_categorical_crossentropy 损失时,您的目标应该是整数目标。”)

您正在传递形状为 (batch_size, 1, 499) 的数据作为输入和标签:

model.fit(s_min_one, s_min_one, ...)

这行不通,标签的形状必须是 (batch_size, 1) 或只是 (batch_size,)

我不完全确定我理解你想要完成的事情,但看起来你需要相应地调整损失函数。

关于python - 无法挤压 dim[1],期望维度为 1,得到 499,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55203072/

相关文章:

python - 返回 Python 中的封闭范围变量

python - 使用 3d 数据和参数在 Scipy 中进行曲线拟合

keras - 为什么我不能将图像数据拟合到我的 CNN 中的 model.predict 中?

python - 如何在 Keras 中为有状态 LSTM 准备数据?

python - Tensorflow LSTM - LSTM 单元上的矩阵乘法

tensorflow - Keras ConvLSTM2D : ValueError when saving model

python - 尝试删除列时的 Pandas 警告

python - 使用 GeoPandas 计算其他多边形内的多边形面积

python - 属性错误 : module 'keras.utils.generic_utils' has no attribute 'populate_dict_with_module_objects'

tensorflow - "Could not compute output"在 Tensorflow 2 中使用 tf.keras 合并层时出错