gpt4 book ai didi

neural-network - 我如何实际执行保存的 TensorFlow 模型?

转载 作者:行者123 更新时间:2023-12-04 04:32:45 25 4
gpt4 key购买 nike

Tensorflow 新手在这里。我正在尝试构建一个 RNN。我的输入数据是一组大小为 instance_size 的向量实例表示一组粒子在每个时间步的 (x,y) 位置。 (由于实例已经具有语义内容,因此它们不需要嵌入。)目标是在下一步学习预测粒子的位置。

关注 RNN tutorial并稍微调整了包含的 RNN 代码,我或多或少地创建了一个模型(省略了一些细节):

inputs, self._input_data = tf.placeholder(tf.float32, [batch_size, num_steps, instance_size])
self._targets = tf.placeholder(tf.float32, [batch_size, num_steps, instance_size])

with tf.variable_scope("lstm_cell", reuse=True):
lstm_cell = tf.nn.rnn_cell.BasicLSTMCell(hidden_size, forget_bias=0.0)
if is_training and config.keep_prob < 1:
lstm_cell = tf.nn.rnn_cell.DropoutWrapper(
lstm_cell, output_keep_prob=config.keep_prob)
cell = tf.nn.rnn_cell.MultiRNNCell([lstm_cell] * config.num_layers)

self._initial_state = cell.zero_state(batch_size, tf.float32)

from tensorflow.models.rnn import rnn
inputs = [tf.squeeze(input_, [1])
for input_ in tf.split(1, num_steps, inputs)]
outputs, state = rnn.rnn(cell, inputs, initial_state=self._initial_state)

output = tf.reshape(tf.concat(1, outputs), [-1, hidden_size])
softmax_w = tf.get_variable("softmax_w", [hidden_size, instance_size])
softmax_b = tf.get_variable("softmax_b", [instance_size])
logits = tf.matmul(output, softmax_w) + softmax_b
loss = position_squared_error_loss(
tf.reshape(logits, [-1]),
tf.reshape(self._targets, [-1]),
)
self._cost = cost = tf.reduce_sum(loss) / batch_size
self._final_state = state

然后我创建了一个 saver = tf.train.Saver() ,迭代数据以使用给定的 run_epoch() 训练它方法,并用 saver.save()写出参数.到现在为止还挺好。

但是我如何实际使用经过训练的模型?教程到此停止。来自 the docs on tf.train.Saver.restore() ,为了回读变量,我需要设置与保存变量时运行的完全相同的图形,或者有选择地恢复特定变量。无论哪种方式,这意味着我的新模型将需要大小为 batch_size x num_steps x instance_size 的输入.但是,我现在想要的只是在大小为 num_steps x instance_size 的输入上对模型进行一次前向传递。并读出一个 instance_size -size 结果(对下一个时间步长的预测);换句话说,我想创建一个模型,该模型接受与我训练的张量不同的张量。我可以通过将现有模型传递给我想要的数据来混合它 batch_size次,但这似乎不是最佳实践。做到这一点的最佳方法是什么?

最佳答案

您必须创建一个具有相同结构但带有 batch_size = 1 的新图。并使用 tf.train.Saver.restore() 导入保存的变量.您可以在 ptb_word_lm.py 中查看他们如何定义多个具有可变批量大小的模型:https://tensorflow.googlesource.com/tensorflow/+/master/tensorflow/models/rnn/ptb/ptb_word_lm.py

因此,您可以拥有一个单独的文件,例如,您可以在其中使用所需的 batch_size 实例化图形,然后恢复保存的变量。然后你可以执行你的图表。

关于neural-network - 我如何实际执行保存的 TensorFlow 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36508860/

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