python - 在 Keras 中设置 LSTM 和 CuDNNLSTM 的参数
问题描述
我开始学习 Keras,对 LSTM 感到有些困惑。我不知道输入参数是什么,例如括号 (n) 和input_shape
.
我的数据集是数字的,它有 30 列,29 个是特征,1 个是输出(1 和 0)。
DataFrame shape (23991, 30)
x_train shape (19192, 29)
y_train shape (19192,)
x_test shape (4799, 29)
y_test shape (4799,)
基于此,参数在我的图层中应该如何显示?
第一的:
model = Sequential()
model.add(LSTM((?), input_shape = ?, return_sequences = ?, activation = ?))
model.add(Dropout(0.01))
model.add(Dense(1, activation='sigmoid'))
第二:
model = Sequential()
model.add(LSTM((?), input_shape = ?, return_sequences = ?, activation = ?))
model.add(LSTM((?), input_shape = ?, return_sequences = ?, activation = ?))
model.add(Dropout(0.01))
model.add(Dense(1, activation='sigmoid'))
例如,如果我使用这些参数是否相同CuDNNLSTM
?
解决方案
x_train shape (19192, 29)
y_train shape (19192,)
x_test shape (4799, 29)
y_test shape (4799,)
如果您有 pandas 数据框,请将它们转换为 numpy 数组。
x_train = x_train.to_numpy()
y_train = y_train.to_numpy()
x_test = x_test.to_numpy()
y_test = y_test.to_numpy()
首先,您需要重塑数据。
x_train = x_train.reshape(19192, 29, 1)
y_train = y_train.reshape(19192,1)
x_test = x_test.reshape(4799, 29, 1)
y_test = y_test.reshape(4799,1)
现在,通常对于 LSTM 维度是:
0 - Samples. One sequence is one sample. A batch is comprised of one or more samples.
1 - Time Steps. One time step is one point of observation in the sample.
2 - Features. One feature is one observation at a time step.
所以,第三个 1 我们添加了一个维度来对应特征。
LSTM 输入形状将是 (29,1) (29 = 时间步长,1 = 每个时间序列的特征数(也为简单起见,您可以将其视为 CNN 中的通道数)
model = Sequential()
model.add(LSTM(units = 10, input_shape = (29,1), return_sequences = False)) # keep other parameters default if you're not sure
model.add(Dropout(0.01))
model.add(Dense(1, activation='sigmoid'))
请注意,我们为第一层添加了 return_srquence = True,但对于第二个 LSTM 层我们没有。原因是 LSTM 需要 3D 数据(批次、时间、特征)但 Dense 需要 2D 数据(批次、特征),当我们看到 return_sequences = True 时,我们将 3D 数据发送到 Dense 的下一层,我们改为发送 2D 数据。
model = Sequential()
model.add(LSTM(units = 10, input_shape = (29,1), return_sequences = True))
model.add(LSTM(units = 10, return_sequences = False))
model.add(Dropout(0.01))
model.add(Dense(1, activation='sigmoid'))
推荐阅读
- django - DRF 没有像预期的那样重新评估查询集
- javascript - 使用传单显示 OpenWeatherMap 的问题
- html - fullpage js 最后一节滚动销毁
- javascript - 未捕获的类型错误:无法读取 null 的属性(读取“vlaue”)
- wso2 - WSO2。Groovy 脚本 - 中的 JSON 有效负载无效
在第 1 行 - android - 为什么在 Fragment 的布局中,app:drawableXXXCompat 和 app:tintm app:xxxTint 不适用于 TextView 和 Images,但在 Activity 布局中效果很好?
- android - 主题同步或令牌检索因硬故障异常而失败:SERVICE_NOT_AVAILABLE
- java - 如何处理线性布局内的动态图像视图?
- python - 嵌套if else python
- amazon-web-services - AWS CloudFormation 在访问 S3 时收到 403