- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是 TensorFlow 的新手,很难理解 RNN 模块。我正在尝试从 LSTM 中提取隐藏/单元格状态。对于我的代码,我使用来自 https://github.com/aymericdamien/TensorFlow-Examples 的实现.
# tf Graph input
x = tf.placeholder("float", [None, n_steps, n_input])
y = tf.placeholder("float", [None, n_classes])
# Define weights
weights = {'out': tf.Variable(tf.random_normal([n_hidden, n_classes]))}
biases = {'out': tf.Variable(tf.random_normal([n_classes]))}
def RNN(x, weights, biases):
# Prepare data shape to match `rnn` function requirements
# Current data input shape: (batch_size, n_steps, n_input)
# Required shape: 'n_steps' tensors list of shape (batch_size, n_input)
# Permuting batch_size and n_steps
x = tf.transpose(x, [1, 0, 2])
# Reshaping to (n_steps*batch_size, n_input)
x = tf.reshape(x, [-1, n_input])
# Split to get a list of 'n_steps' tensors of shape (batch_size, n_input)
x = tf.split(0, n_steps, x)
# Define a lstm cell with tensorflow
#with tf.variable_scope('RNN'):
lstm_cell = rnn_cell.BasicLSTMCell(n_hidden, forget_bias=1.0, state_is_tuple=True)
# Get lstm cell output
outputs, states = rnn.rnn(lstm_cell, x, dtype=tf.float32)
# Linear activation, using rnn inner loop last output
return tf.matmul(outputs[-1], weights['out']) + biases['out'], states
pred, states = RNN(x, weights, biases)
# Define loss and optimizer
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y))
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
# Evaluate model
correct_pred = tf.equal(tf.argmax(pred,1), tf.argmax(y,1))
accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))
# Initializing the variables
init = tf.initialize_all_variables()
现在我想为预测中的每个时间步提取单元/隐藏状态。状态存储在形式为 (c,h) 的 LSTMStateTuple 中,我可以通过评估 print states
找到它。但是,尝试调用 print states.c.eval()
(根据文档应该给我张量 states.c
中的值),会产生一个错误,指出即使我在预测某事后立即调用它,我的变量也没有初始化。代码在这里:
# Launch the graph
with tf.Session() as sess:
sess.run(init)
step = 1
# Keep training until reach max iterations
for v in tf.get_collection(tf.GraphKeys.VARIABLES, scope='RNN'):
print v.name
while step * batch_size < training_iters:
batch_x, batch_y = mnist.train.next_batch(batch_size)
# Reshape data to get 28 seq of 28 elements
batch_x = batch_x.reshape((batch_size, n_steps, n_input))
# Run optimization op (backprop)
sess.run(optimizer, feed_dict={x: batch_x, y: batch_y})
print states.c.eval()
# Calculate batch accuracy
acc = sess.run(accuracy, feed_dict={x: batch_x, y: batch_y})
step += 1
print "Optimization Finished!"
错误信息是
InvalidArgumentError: You must feed a value for placeholder tensor 'Placeholder' with dtype float
[[Node: Placeholder = Placeholder[dtype=DT_FLOAT, shape=[], _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
状态在 tf.all_variables()
中也不可见,只有经过训练的矩阵/偏差张量(如此处所述:Tensorflow: show or save forget gate values in LSTM)。我不想从头开始构建整个 LSTM,因为我在 states
变量中有状态,我只需要调用它。
最佳答案
您可以像收集准确度一样简单地收集状态
的值。
我想,pred, states, acc = sess.run(pred, states, accuracy, feed_dict={x: batch_x, y: batch_y})
应该工作得很好。
关于python - 如何从 tensorflow 中的 RNN 模型中提取细胞状态和隐藏状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40272567/
我想知道是否有任何方法可以将单元格“提供”给 Google 电子表格中的某人?我有一个电子表格,任何人都可以编写他们想要的内容,任何人都可以编辑他们想要的内容。我想添加一个功能,使得只有单元格的“作者
我如何根据一个输入的最大长度设置单元格的自动调整大小。 using (rng = workSheet.Cells["A1:G1"]) { rng.Style.Font.Bold = true;
如果我想在 Objective-C 中创建一个 TableView ,每个单元格都以不同的方式定制,我会创建多个原型(prototype)单元格,对其进行定制,然后为每个单元格设置自己的标识符。然后我
我正在使用平板电脑 View 并且我的表格 View 是分组的。我使用单个原型(prototype)单元格。在我的单元格中,我使用 UIView 并且只想将第一个单元格 View 设置为顶部,最后一个
如何让特定的 TD 不继承表格的 CSS 样式? 我应该如何使最右边的列完全没有任何背景? table { font-family:Arial, Helvetica, sans-serif;
我目前正在开发一个小项目 (Python 3.6.2),用于根据我从大学网站上抓取的输入自动创建时间表。为了创建时间表和存储约会(以及稍后重新组织它们,以找到“更好”的时间表),我目前使用 Panda
我想使用 python 数组模拟基本的细胞 split 。我有 u,它是一个数组,定义如下: n=2 #number of elements that can describe each cell N
渲染 Markdown 单元格时,在 latex 部分之后会显示垂直条。有什么办法可以去掉这些吗? 例如,markdown 单元格中的以下代码: $\left[ \begin{array}{cccc}
我正在使用 Yosys综合我的 RTL 设计,其中包括几个文字常量,例如绑定(bind)输出端口,如下代码所示: module my_module ( input a, input b
如何在 igGrid 更新中的 igTextEditor 上使用正则表达式? 我尝试使用验证选项,但它没有用。 $("#schedulerTable").igGrid({
我的问题是关于如何构建 LSTM 层,例如在 keras 中: keras.layers.LSTM(units,... other options) 这些单位是单个细胞还是细胞状态的维度? 我读过有关
我寻找将 selectedInputs 放入 renderDataTable 单元格的解决方案。我找到了 js 解决方案:https://datatables.net/examples/api/for
我是一名优秀的程序员,十分优秀!