Python 如何在Keras中为Bi LSTM准备2D形状

Python 如何在Keras中为Bi LSTM准备2D形状,python,keras,lstm,bidirectional,Python,Keras,Lstm,Bidirectional,我有一个已经压缩的单词向量的2D numpy矩阵(来自数据帧)(我使用了最大池技术,试图将logres与bi LSTM方法进行比较),我不知道如何准备它以便在keras模型中使用 我知道Bi LSTM模型需要一个3D张量,并尝试过谷歌搜索解决方案,但找不到有效的解决方案 这就是我现在拥有的: #设置模型参数 纪元=4 批量大小=32 输入_形状=(1,10235,3072) #创建模型 模型=顺序() 添加(双向(LSTM(64,返回序列=真,输入形状=输入形状))) 模型。添加(辍学率(0.5

我有一个已经压缩的单词向量的2D numpy矩阵(来自数据帧)(我使用了最大池技术,试图将logres与bi LSTM方法进行比较),我不知道如何准备它以便在keras模型中使用

我知道Bi LSTM模型需要一个3D张量,并尝试过谷歌搜索解决方案,但找不到有效的解决方案

这就是我现在拥有的:

#设置模型参数
纪元=4
批量大小=32
输入_形状=(1,10235,3072)
#创建模型
模型=顺序()
添加(双向(LSTM(64,返回序列=真,输入形状=输入形状)))
模型。添加(辍学率(0.5))
add(密集(1,激活='sigmoid'))
#尝试使用不同的优化器和不同的优化器配置
compile('adam','binary\u crossentropy',metrics=['accurity'])
#在模型上安装培训集,并在验证集上进行更正
模型拟合(输入['X_序列]、输入['y_序列],
批次大小=批次大小,
时代,
验证数据=[输入['X\u验证'],输入['y\u验证']]
#通过测试集获得分数
返回模型。评估(输入['X_测试]],输入['y_测试])
我当前遇到以下错误:

ValueError: Input 0 is incompatible with layer bidirectional_23: expected ndim=3, found ndim=2
我的训练数据(
输入['X_train']
)的形状是
(102353072)


非常感谢

我通过以下方式使其与回复的建议配合使用:

  • 删除
    return_sequence=True
  • 将以下转换应用于X集:
    np.reforme(输入[dataset],(输入[dataset].shape[0],输入[dataset].shape[1],1))
  • 将LSTM层的输入形状更改为
    (102353072,1)
    ,这是
    X\u列的形状
    
    使用输入['X_test'].应用(lambda X:np.重塑(X,(1,10235,3072))@BenjaminBreton感谢您的快速回复!我试过了,但现在我遇到了以下错误:
    ValueError:checking target时出错:期望稠密的\u 29有3维,但得到了形状为(10235,1)的数组。
    除非您想预测每个序列元素的一个值,否则不应该返回\u sequence=True,在这种情况下,稠密应该是时间分布的