到目前为止,这是我认为我需要的行,但不确定它是否正确。
tf.saved_model.simple_save(sess, 'mnist_model',
inputs={'x': self.x},
outputs={'y_': self.y_, 'y_conv':self.y_conv})
如果有人能告诉我如何正确地保存训练过的模型,以及使用哪些变量来使用保存的模型进行推理,我会非常感激的。
可以这样做的一种方法是在图形定义中创建tf.train.saver()
对象,然后使用该对象将网络保存到指定的目录中。然后,该目录中的权重可以从远程计算机下载到本地计算机,并在本地还原。下面是一个小的示例网络:
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
# >>>> Config. Vars <<<<
TRAIN_STEPS = 1000
SAVE_EVERY = 100
# >>>> Network <<<<
inputs = tf.placeholder(tf.float32, shape=[None, 784])
labels = tf.placeholder(tf.float32, shape=[None, 10])
h1 = tf.layers.dense(inputs, 256, activation=tf.nn.relu, use_bias=True)
logits = tf.layers.dense(h1, 10, use_bias=True)
predictions = tf.nn.softmax(logits)
prediction_ids = tf.argmax(predictions, axis=1)
# >>>> Loss & Optimisation <<<<
loss = tf.nn.softmax_cross_entropy_with_logits_v2(labels=labels, logits=logits)
opt = tf.train.AdamOptimizer().minimize(loss)
# >>>> Utilities <<<<
init = tf.global_variables_initializer()
saver = tf.train.Saver()
with tf.Session() as sess:
sess.run(init)
# >>>> Training - run on remote, comment out locally <<<<
for i in range(TRAIN_STEPS):
print("Train step {}".format(i), end="\r")
batch_data, batch_labels = mnist.train.next_batch(batch_size=128)
feed_dict = {
inputs: batch_data,
labels: batch_labels
}
l, _ = sess.run([loss, opt], feed_dict=feed_dict)
if i % SAVE_EVERY == 0:
saver.save(sess, "saved_model/network_weights.ckpt")
# >>>> Using the network - run locally to use the network <<<
saver.restore(sess, "saved_model/network_weights.ckpt")
test_data, test_labels = mnist.test.images, mnist.test.labels
feed_dict = {
inputs: test_data,
labels: test_labels
}
preds = sess.run(prediction_ids, feed_dict=feed_dict)
print(preds)
因此,一旦您在网络中定义了保存程序,您就可以使用它将权重保存到指定的目录中--在本例中,保存到“saved_models”目录中,在运行此特定代码之前,您需要创建该目录。
恢复模型非常简单,只需调用saver.restore()
并将会话和权重存储路径传递给它。因此您可以在远程机器上运行此代码,将“saved_models”目录下载到本地机器上,然后运行此代码并注释掉训练部分以实际使用模型。
本文向大家介绍Tensorflow实现在训练好的模型上进行测试,包括了Tensorflow实现在训练好的模型上进行测试的使用技巧和注意事项,需要的朋友参考一下 Tensorflow可以使用训练好的模型对新的数据进行测试,有两种方法:第一种方法是调用模型和训练在同一个py文件中,中情况比较简单;第二种是训练过程和调用模型过程分别在两个py文件中。本文将讲解第二种方法。 模型的保存 tensorflo
我仍在学习Python和创建模型,对使用Spacy的NLP非常陌生。我曾经https://spacy.io/usage/training#ner培训Spacy现有的模式——en_core_web_sm。 我用我的领域特定实体训练了这个模型。 现在我假设我会在输出目录中找到一个模型文件。相反,我有4个子文件夹——词汇表、ner、标记器、解析器。还有2个文件meta.json和标记器。ner子文件夹有
本文向大家介绍tensorflow如何继续训练之前保存的模型实例,包括了tensorflow如何继续训练之前保存的模型实例的使用技巧和注意事项,需要的朋友参考一下 一:需重定义神经网络继续训练的方法 1.训练代码 第一次训练截图: 2.恢复上一次的训练 使用上次保存下的数据进行继续训练和保存: #最后要提一下的是: checkpoint文件 meta保存了TensorFlow计算图的结构信息 da
我正在尝试将一个使用sklearn训练的模型部署到endpoint,并将其作为预测的API。我想使用sagemaker的目的就是部署和服务器模型,我已经使用序列化了这个模型,仅此而已。我读过的每个博客和sagemaker python文档都表明,为了在sagemaker中部署,sklearn模型必须在sagemaker上进行培训。 在阅读SageMaker文档时,我了解到SageMaker允许用户
问题内容: 我有一个训练了40个时代的模型。我为每个纪元保留了检查点,并且还用保存了模型。培训代码为: 但是,当我加载模型并尝试再次对其进行训练时,它会像以前从未进行过训练一样从头开始。损失不是从上一次训练开始的。 使我感到困惑的是,当我加载模型并重新定义模型结构并使用时,效果很好。因此,我相信模型权重已加载: 但是,当我继续进行此训练时,损失与初始阶段一样高: 我在这里和这里搜索并找到了一些保存
如何保存已训练的模型? 以后如何还原此保存的模型?