python-3.x - 在 keras 中将 LSTM 层添加到我的自动编码器
问题描述
我在 keras 中构建了这个带有 tensorflow 后端的自动编码器模型
encoded = Dense(units=600, activation='relu')(input_img)
encoded = Dense(units=500, activation='relu')(encoded)
encoded = Dense(units=bottleneck, activation='relu')(encoded)
decoded = Dense(units=500, activation='relu')(encoded)
decoded = Dense(units=600, activation='relu')(decoded)
decoded = Dense(units=img_size, activation='sigmoid')(decoded)
编码器的输入是一个一维数组,即 [1,2,3,4,5] 或者换句话说,一个图像的向量
我想添加一个 LSTM 层来改善我的结果,但是,我理解 LSTM 需要 3 维数据,并且我想将我的数据保留为向量。有人可以给我一个例子,说明如何使用重塑来集成这样的层吗?到目前为止,我所有的尝试都失败了。
解决方案
keras LSTM 需要维度(批次数、时间步长、特征数),因此您需要从我假设它代表的一维数组中更改,1 个示例,1 个特征和 5 个时间步长,[1,2,3,4,5]到 (1,5,1) 从 (你的例子数, 时间步数, 特征数) np.array([1,2,3,4,5]).reshape((1,5,1))
。您还需要将输出重塑为(批次数、时间步长、预测值),例如 [2,3,4,5,6] 到np.array([2,3,4,5,6]).reshape((1,5,1))
. 所以,现在你可以添加 LSTM。
例子
number_of_steps = 5
number_of_feature = 1
latent_dimension = 10
bottleneck = 2
input_of_model= Input(shape=(number_of_steps,number_of_feature))
# just in case you want state_h, state_c for something else
lstm_output, state_h, state_c = LSTM(latent_dimension, return_sequences=True, return_state=True)(input_of_model)
encoded = Dense(units=600, activation='relu')(lstm_output)
encoded = Dense(units=500, activation='relu')(encoded)
encoded = Dense(units=bottleneck, activation='relu')(encoded)
decoded = Dense(units=500, activation='relu')(encoded)
decoded = Dense(units=600, activation='relu')(decoded)
decoded = Dense(units=number_of_feature, activation='sigmoid')(decoded)
M = Model(inputs=[input_of_model], outputs=[decoded])
M.compile(keras.optimizers.Adam(),loss='mse')
M.summary()
M.fit(x=np.array([1,2,3,4,5]).reshape((1,5,1)), y=np.array([2,3,4,5,6]).reshape((1,5,1)), epochs=200)
推荐阅读
- c# - 虽然我可以使用 C# 代码读取,但在使用 c# 创建的注册表编辑器中找不到键
- java - 成员字段位于 JVM 中的什么位置?
- c# - 如何使用 ITaskbarList3.RegisterTab 在任务栏弹出窗口内的选项卡中显示图像?
- python-3.x - 如何保留来自 pandas DataFrame 的数据的百分比?
- html - 当网格项目在移动视图中折叠时避免双重网格间隙
- python - 如何从 Ubuntu Dash 运行 Python 脚本?
- python-3.x - XGBoost 模型树价值洞察
- reactjs - React Router v4 嵌套路由子路由器
- javascript - 基于登录用户的条件查询
- scrollview - IOS中的侧抽屉滚动视图问题