我想使用占位符来获取基于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.
我将不胜感激。
答案 0 :(得分:0)
错误来自以下代码:[net] * n_layers
。
您正试图制作一个类似[net, net, ..., net]
的列表(长度为n_layers
),但n_layers
现在是未知值的占位符。
我无法想到用占位符做到这一点的方法,所以我猜你必须回到标准n_layers=3
。 (无论如何,将n_layers
作为占位符并不是一个好习惯。)