gpt4 book ai didi

python - 无法理解 tensorflow 代码示例中的 lstm 使用

转载 作者:太空宇宙 更新时间:2023-11-03 14:56:47 36 4
gpt4 key购买 nike

为什么要在任何训练迭代发生之前计算 pred 变量?我希望在每次迭代的数据each传递期间生成pred(通过RNN()函数)?

一定是我漏掉了一些东西。 pred 类似于函数对象吗?我查看了 tf.matmul() 的文档,它返回一个张量,而不是一个函数。

完整来源:https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/recurrent_network.py

这是代码:

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)

# Unstack to get a list of 'n_steps' tensors of shape (batch_size, n_input)
x = tf.unstack(x, n_steps, 1)

# Define a lstm cell with tensorflow
lstm_cell = rnn.BasicLSTMCell(n_hidden, forget_bias=1.0)

# Get lstm cell output
outputs, states = rnn.static_rnn(lstm_cell, x, dtype=tf.float32)

# Linear activation, using rnn inner loop last output
return tf.matmul(outputs[-1], weights['out']) + biases['out']

pred = RNN(x, weights, biases)

# Define loss and optimizer
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred, labels=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.global_variables_initializer()

最佳答案

Tensorflow 代码有两个不同的阶段。首先,您构建一个“依赖关系图”,其中包含您将使用的所有操作。请注意,在此阶段您不会处理任何数据。相反,您只需定义想要发生的操作。 Tensorflow 正在记录操作之间的依赖关系。

例如,为了计算准确度,您需要首先计算 Correct_pred ,然后计算 Correct_pred ,您将需要首先计算pred,依此类推。

所以你在所示代码中所做的就是告诉tensorflow你想要什么操作。您已将它们保存在“图形”数据结构中(这是一个 tensorflow 数据结构,基本上是一个包含所有数学运算和张量的存储桶)。

稍后您将使用sess.run([ops], feed_dict={inputs})调用来对数据运行操作。

当您调用 sess.run 时,请注意您必须告诉它您想要从图中得到什么。如果您要求准确性:

   sess.run(accuracy, feed_dict={inputs})

Tensorflow 将尝试计算准确性。它将发现accuracy取决于 Correct_pred,因此它将尝试计算它,并通过您定义的依赖关系图依此类推。

您犯的错误是您认为您列出的代码中的 pred 正在计算某些内容。它不是。该行:

   pred = RNN(x, weights, biases)

仅定义操作及其依赖项。

关于python - 无法理解 tensorflow 代码示例中的 lstm 使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45496277/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com