TensorFlow 中 LSTM-RNN 参数的占位符

Posted

技术标签:

【中文标题】TensorFlow 中 LSTM-RNN 参数的占位符【英文标题】:Placeholders for LSTM-RNN parameters in TensorFlow 【发布时间】:2016-10-01 14:02:27 【问题描述】:

我想在基于 LSTM 的 RNN 中使用占位符来表示丢失率、隐藏单元数和层数。以下是我目前正在尝试的代码。

 dropout_rate = tf.placeholder(tf.float32)

 n_units = tf.placeholder(tf.uint8)

 n_layers = tf.placeholder(tf.uint8)

 net = rnn_cell.BasicLSTMCell(n_units)

 net = rnn_cell.DropoutWrapper(net, output_keep_prob = dropout_rate)

 net = rnn_cell.MultiRNNCell([net] * n_layers)

最后一行给出以下错误:

  TypeError: Expected uint8, got <tensorflow.python.ops.rnn_cell.DropoutWrapper  
  object ... of type 'DropoutWrapper' instead.

我将不胜感激。

【问题讨论】:

【参考方案1】:

错误由以下代码引发:[net] * n_layers

您正在尝试创建一个类似于[net, net, ..., net](长度为n_layers)的列表,但n_layers 现在是未知值的占位符。

我想不出用占位符来做到这一点的方法,所以我想你必须回到标准的n_layers=3。 (无论如何,将n_layers 作为占位符一开始就不是一个好习惯。)

【讨论】:

我想通过改变 dropout 率、单元数和层数来对 RNN 进行超参数优化。所以,我认为对这些数量使用占位符是有意义的。你能建议一种方法来对 RNN 进行超参数搜索,或者让我参考一个这样做的例子吗?

以上是关于TensorFlow 中 LSTM-RNN 参数的占位符的主要内容,如果未能解决你的问题,请参考以下文章

我们可以将 LSTM-RNN 应用于数值数据的二进制分类吗

使用LSTM-RNN建立股票预测模型

基于LSTM-RNN的深度学习网络的训练对比matlab仿真

RNN 模型错误:“ValueError:此模型尚未构建。”

TensorFlow从0到1之TensorFlow超参数及其调整(24)

TensorFlow从0到1之TensorFlow超参数及其调整(24)