LSTM输出应为什么尺寸?目前,我正在使用return_sequences=False
,而model.summary()
建议Dense(1, activation='sigmoid')
层应具有输出:
(None, 1)
None
是批次大小。
这是否意味着我的y
也必须是二维的?
当前,我正在使用形状为y.shape = (None,)
的一维数组,它看起来可以正常工作,但是我想知道是否应该添加新轴来匹配尺寸,例如:
y = y[:, np.newaxis]
编辑:
下面是我的模型摘要。
本质上,我正在对一个二进制分类器(0或1)建模,并且正在同时以batch_size
和time steps
的形式输入可变大小的批次。因此,X.shape = (None, None, no_of_features)
的尺寸。
如下所示,Dense()
层的输出为(None, 1)
,其中我的Y
实际上是(Batch_size, )
,即一维numpy数组。我应该添加一个新轴以使Y
变成2d吗?例如。 (batch_size, 1)
?
我都尝试过,而且似乎都可以。那有什么区别?
__________________________________________________________________________________________________
concatenate_8 (Concatenate) (None, None, 285) 0 numeric_input[0][0]
concatenate_7[0][0]
__________________________________________________________________________________________________
dropout_3 (Dropout) (None, None, 285) 0 concatenate_8[0][0]
__________________________________________________________________________________________________
lstm_4 (LSTM) (None, 64) 89600 dropout_3[0][0]
__________________________________________________________________________________________________
main_output (Dense) (None, 1) 65 lstm_4[0][0]
==================================================================================================
答案 0 :(得分:0)
两者都是等效的,任一种方法都可以。原因是(None,1)
和(None,)
这两个形状是兼容的,并且会自动广播到相同的形状。这等效于您手动添加大小为1的新尺寸。Here是有关tensorflow广播的一些补充读物。