python - 检查输入时Tensorflow抛出值错误(lstm_1)
问题描述
model.fit 产生异常:
ValueError:检查输入时出错:预期 lstm_1_input 具有 3 个维度,但得到的数组具有形状 (60752, 29)
这是模型结构:
train_x, valid_x = arr[:split, :], arr[split:, :]
train_y, valid_y = target[:split], target[split:]
train_x = train_x.reshape(train_x.shape[0], -1)
train_y = train_y.reshape(train_y.shape[0], -1)
valid_x = valid_x.reshape(valid_x.shape[0], -1)
valid_y = valid_y.reshape(valid_y.shape[0], -1)
print(train_x.shape)
input_params = train_x.shape[1]
print(input_params)
model = Sequential()
#start
model.add(LSTM(100, return_sequences=True, input_shape=(input_params, 1)))
model.add(LeakyReLU(alpha=2))
model.add(LSTM(100, return_sequences=True))
model.add(LeakyReLU(alpha=2))
model.add(LSTM(100))
model.add(LeakyReLU(alpha=2))
model.add(Dense(2, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
`
这些是模型的参数:
lstm_1 (LSTM) (None, 29, 100) 40800
_________________________________________________________________
leaky_re_lu_1 (LeakyReLU) (None, 29, 100) 0
_________________________________________________________________
lstm_2 (LSTM) (None, 29, 100) 80400
_________________________________________________________________
leaky_re_lu_2 (LeakyReLU) (None, 29, 100) 0
_________________________________________________________________
lstm_3 (LSTM) (None, 100) 80400
_________________________________________________________________
leaky_re_lu_3 (LeakyReLU) (None, 100) 0
_________________________________________________________________
dense_1 (Dense) (None, 2) 202
_________________________________________________________________
dense_2 (Dense) (None, 1) 3
=================================================================
Total params: 201,805
Trainable params: 201,805
Non-trainable params: 0
任何人都可以帮我解决这个问题吗?
解决方案
如果您希望您的输入只有 1 个通道,那么要么
[1] 重塑x
train_x = train_x.reshape(train_x.shape[0], -1)
train_y = train_y.reshape(train_y.shape[0], -1)
valid_x = valid_x.reshape(valid_x.shape[0], -1)
valid_y = valid_y.reshape(valid_y.shape[0], -1)
train_x = np.expand_dims(train_x, -1)
valid_x = np.expand_dims(valid_x, -1)
或 [2] 添加一个Reshape
图层
model = Sequential()
model.add(keras.layers.Reshape((-1, 1)))
#start
应该这样做。
推荐阅读
- c# - 从新类 (Xamarin) 更改 Xaml-Image.Source
- javascript - 画布游戏会在一段时间后变慢。是什么原因造成的?
- excel - Excel基本如何突出显示单元格A和B不相等的行?
- javascript - Google OAUTH 不在 MongoDB 中存储电子邮件?
- gradle - 我如何使用 gradle 调试 intelij tomcat
- f# - 获取 F# 中布尔数组中特定位置的索引值
- css - 如何将标题表与表响应(不是javascript)粘贴在一起?
- sql - 使用存在或不存在查找唯一的名称
- python - python:反转影响运算符的魔术方法的元素
- java - WebObjects 图像缓存