检查输入时出错:预期 lstm_1_input 的形状为 (71, 768) 但得到的数组形状为 (72, 768)
Posted
技术标签:
【中文标题】检查输入时出错:预期 lstm_1_input 的形状为 (71, 768) 但得到的数组形状为 (72, 768)【英文标题】:Error when checking input: expected lstm_1_input to have shape (71, 768) but got array with shape (72, 768) 【发布时间】:2020-07-19 01:08:54 【问题描述】:我正在加载形状为 ((23094, 71, 768), (23094, 19, 282)) 的预训练模型。
当我传递形状为 (29116, 72, 768) 的新 X 值时,它在检查输入时显示错误:预期 lstm_1_input 的形状为 (71, 768) 但得到的数组形状为 ( 72, 768)。
这是我的模型摘要: 型号:“sequential_1”
图层(类型)输出形状参数#
lstm_1 (LSTM) (无, 71, 256) 1049600
lstm_2 (LSTM) (无, 71, 64) 82176
lstm_3 (LSTM) (无, 32) 12416
dense_1(密集)(无,5358)176814
reshape_1 (重塑) (无, 19, 282) 0
activation_1(激活)(无、19、282)0
总参数:1,321,006 可训练参数:1,321,006 不可训练参数:0
【问题讨论】:
【参考方案1】:LSTM 需要一个 3D 数组(批量大小、时间步长、特征)。有很多方法可以使用可变时间长度进行训练(维度 = 1,在您的情况下为 71)。
在您的情况下,样本大小 = 23094、23094(这不需要匹配)
时间维度 = 71 != 19(如果您有可变的输入长度并且在一个批次中所有输入的长度相同,这可能会有所不同,但在您的模型摘要中,时间维度固定为 71 而不是无,因此您必须使用 71 个时间维度进行训练)
特征维度 = 768 != 282(必须相同)
只需使用零填充来匹配形状https://www.tensorflow.org/api_docs/python/tf/keras/layers/ZeroPadding2D
另外,提供完整代码以获得基于代码的答案。
【讨论】:
你好 furcifer,这是链接colab.research.google.com/drive/… 在与数据共享 colab 笔记本时需要授予访问权限或公开。以上是关于检查输入时出错:预期 lstm_1_input 的形状为 (71, 768) 但得到的数组形状为 (72, 768)的主要内容,如果未能解决你的问题,请参考以下文章
ValueError:检查输入时出错:预期 lstm_1_input 具有 3 个维度,但得到的数组具有形状 (393613, 50)
ValueError:检查输入时出错:预期 lstm_16_input 有 3 个维度,但得到的数组形状为 (836, 400, 3, 1)
检查输入时出错:预期 lstm_input 有 3 个维度,但得到的数组形状为 (4, 1)
ValueError:检查输入时出错:预期dense_1_input的形状为(180,),但数组的形状为(1,)