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的深度学习网络的训练对比matlab仿真
RNN 模型错误:“ValueError:此模型尚未构建。”