使用 Keras Tuner RandomSearch 错误进行超参数调优

Posted

技术标签:

【中文标题】使用 Keras Tuner RandomSearch 错误进行超参数调优【英文标题】:Hyperparameter Tuning with Keras Tuner RandomSearch Error 【发布时间】:2021-07-18 18:58:46 【问题描述】:

我正在使用 keras Tuner 来优化超参数:隐藏层、神经元、激活函数和学习率。我有 31 个输入、32 个输出和 N 个数据样本的时间序列回归问题。

我原来的 X_train 形状是 (N,31) 而 Y_train 形状是 (N,32)。我将其转换为适用于 keras 形状,并重塑 X_train 和 Y_train 如下: X_train.shape: (N,31,1) Y_train.shape: (N,32)。

在上面的代码中,X_train.shape(1) 为 31,Y_train.shape(1) 为 32。当我使用超参数调整时,它说 ValueError: Input 0 of layer lstm_1 is incompatible with the layer: expected ndim= 3、发现ndim=2。收到的完整形状:(无,20)。

存在以下错误:

我缺少什么以及它的问题是什么。

【问题讨论】:

【参考方案1】:

LSTM 层需要一个形状为 [batch, timesteps, feature] 的 3D 张量输入。由于您使用的层数与 LSTM 层一起是一个调整参数,当 LSTM 层数为 2 及以上时,第一个 LSTM 层之后的 LSTM 层也将期望 3D 张量作为输入,这意味着您将需要将 'return_sequences=True' 参数添加到设置中,以便前一个 LSTM 层的输出张量具有 ndim=3(即批量大小、时间步长、隐藏状态),并将其馈入下一个 LSTM 层。

【讨论】:

我添加了 return_sequences=True。仍然存在问题: ValueError: 尺寸必须相等,但对于具有输入形状的 'node mean_squared_error/SquaredDifference = SquaredDifference[T=DT_FLOAT](sequential/dense/BiasAdd, IteratorGetNext:1)' 为 31 和 192 :[192,31,32],[192,32]。 tuner.results_su

以上是关于使用 Keras Tuner RandomSearch 错误进行超参数调优的主要内容,如果未能解决你的问题,请参考以下文章

TensorBoard 的 Keras Tuner Trials 目录的命名

使用 Keras Tuner RandomSearch 错误进行超参数调优

使用 Keras Tuner 的未知度量 val_accuracy

Keras Sklearn Tuner 模块“sklearn”没有属性“管道”

将参数发送到 Keras Tuner 模型构建器函数

can tuner和silicon tuner的区别