Keras LSTM input/output 形状
Keras LSTM input/output shape
我需要在每个循环层都有输出,我的设置如下:
100 个训练示例,每个示例 3 个时间步,每个单独元素的 20 维特征向量。
x_train: (100,3,20)
y_train: (100,20)
LSTM 架构:
model.add(LSTM(20, input_shape=(3,20), return_sequences=True))
model.compile(loss='mean_absolute_error', optimizer='adam', metrics=['accuracy'])
model.summary()
培训:
history = model.fit(x_train, y_train, epochs=50, validation_data=(x_test, y_test))
错误:
ValueError: Dimensions must be equal, but are 20 and 3 for '{{node Equal}} = Equal[T=DT_FLOAT, incompatible_shape_error=true](IteratorGetNext:1, Cast_1)' with input shapes: [?,20], [?,3].
请帮助我确定正确的 input/output LSTM 维度。
谢谢
LSTM(20, input_shape=(3,20), return_sequences=True)
作为输入形状 (100,3,20)
和 returns (100,3,20)
。但是,您的目标输出被编码为 (100,20)
.
从维度来看,我假设您想将每个序列映射到一个 non-sequence,即您可以这样做:
LSTM(20, input_shape=(3,20), return_sequences=False)
这将 return 最终的隐藏状态,即 (100,20)
的形状与您的目标输出相匹配。
我需要在每个循环层都有输出,我的设置如下:
100 个训练示例,每个示例 3 个时间步,每个单独元素的 20 维特征向量。
x_train: (100,3,20)
y_train: (100,20)
LSTM 架构:
model.add(LSTM(20, input_shape=(3,20), return_sequences=True))
model.compile(loss='mean_absolute_error', optimizer='adam', metrics=['accuracy'])
model.summary()
培训:
history = model.fit(x_train, y_train, epochs=50, validation_data=(x_test, y_test))
错误:
ValueError: Dimensions must be equal, but are 20 and 3 for '{{node Equal}} = Equal[T=DT_FLOAT, incompatible_shape_error=true](IteratorGetNext:1, Cast_1)' with input shapes: [?,20], [?,3].
请帮助我确定正确的 input/output LSTM 维度。 谢谢
LSTM(20, input_shape=(3,20), return_sequences=True)
作为输入形状 (100,3,20)
和 returns (100,3,20)
。但是,您的目标输出被编码为 (100,20)
.
从维度来看,我假设您想将每个序列映射到一个 non-sequence,即您可以这样做:
LSTM(20, input_shape=(3,20), return_sequences=False)
这将 return 最终的隐藏状态,即 (100,20)
的形状与您的目标输出相匹配。