tensorflow重载模型继续训练得到的loss比原模型继续训练得到的loss大，是什么原因？？

``````原代码：
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
import os
import numpy as np

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

tf.reset_default_graph()

###定义数据和标签
n_inputs = 784
n_classes = 10
X = tf.placeholder(tf.float32,[None,n_inputs],name='X')
Y = tf.placeholder(tf.float32,[None,n_classes],name='Y')

###定义网络结构
n_hidden_1 = 256
n_hidden_2 = 256
layer_1 = tf.layers.dense(inputs=X,units=n_hidden_1,activation=tf.nn.relu,kernel_regularizer=tf.contrib.layers.l2_regularizer(0.01))
layer_2 = tf.layers.dense(inputs=layer_1,units=n_hidden_2,activation=tf.nn.relu,kernel_regularizer=tf.contrib.layers.l2_regularizer(0.01))
outputs = tf.layers.dense(inputs=layer_2,units=n_classes,name='outputs')
pred = tf.argmax(tf.nn.softmax(outputs,axis=1),axis=1)
print(pred.name)
err = tf.count_nonzero((pred - tf.argmax(Y,axis=1)))
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(logits=outputs,labels=Y),name='cost')
print(cost.name)

###定义优化器
learning_rate = 0.001

saver = tf.train.Saver()
checkpoint = 'softmax_model/dense_model.cpkt'
###训练
batch_size = 100
training_epochs = 11
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for epoch in range(training_epochs):
batch_num = int(mnist.train.num_examples / batch_size)
epoch_cost = 0
sumerr = 0
for i in range(batch_num):
batch_x,batch_y = mnist.train.next_batch(batch_size)
c,e = sess.run([cost,err],feed_dict={X:batch_x,Y:batch_y})
_ = sess.run(optimizer,feed_dict={X:batch_x,Y:batch_y})
epoch_cost += c / batch_num
sumerr += e / mnist.train.num_examples
if epoch == (training_epochs - 1):
print('batch_cost = ',c)
if epoch == (training_epochs - 2):
saver.save(sess, checkpoint)
print('test_error = ',sess.run(cost, feed_dict={X: mnist.test.images, Y: mnist.test.labels}))

``````
``````重载模型的代码：
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
import os

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

file_path = 'softmax_model/dense_model.cpkt'

saver = tf.train.import_meta_graph(file_path + '.meta')
graph = tf.get_default_graph()

X = graph.get_tensor_by_name('X:0')
Y = graph.get_tensor_by_name('Y:0')
cost = graph.get_operation_by_name('cost').outputs[0]
train_op = graph.get_operation_by_name('OP')

training_epoch = 10
learning_rate = 0.001
batch_size = 100
with tf.Session() as sess:
saver.restore(sess,file_path)
print('test_cost = ',sess.run(cost, feed_dict={X: mnist.test.images, Y: mnist.test.labels}))
for epoch in range(training_epoch):
batch_num = int(mnist.train.num_examples / batch_size)
epoch_cost = 0
for i in range(batch_num):
batch_x, batch_y = mnist.train.next_batch(batch_size)
c = sess.run(cost, feed_dict={X: batch_x, Y: batch_y})
_ = sess.run(train_op, feed_dict={X: batch_x, Y: batch_y})
epoch_cost += c / batch_num

print(epoch_cost)
``````

1个回答

qq_37177444 回复weixin_43889558: 我也遇到了这个问题，楼主找到原因了吗？

weixin_43889558 我感觉并没有，因为原模型我继续训练了几步，它的loss仍然是下降的。而且载入的模型loss虽然变大了，但仍然是在下降的。我想请问下，我这种载入模型的方法有没有错误呢？？

Java学习的正确打开方式

Python——画一棵漂亮的樱花树（不同种樱花+玫瑰+圣诞树喔）

《面试宝典》2019年springmvc面试高频题(java)

【前言】 　　收到一封来信，赶上各种事情拖了几日，利用今天要放下工作的时机，做个回复。 　　2020年到了，就以这一封信，作为开年标志吧。 【正文】 　　您好，我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。 　　先说一下我的基本情况，高考失利，不想复读，来到广州一所大专读计算机应用技术专业。学校是偏艺术类的，计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...

Python+OpenCV实时图像处理

2020年一线城市程序员工资大调查

Windows可谓是大多数人的生产力工具，集娱乐办公于一体，虽然在程序员这个群体中都说苹果是信仰，但是大部分不都是从Windows过来的，而且现在依然有很多的程序员用Windows。 所以，今天我就把我私藏的Windows必装的软件分享给大家，如果有一个你没有用过甚至没有听过，那你就赚了????，这可都是提升你幸福感的高效率生产力工具哦！ 走起！???? NO、1 ScreenToGif 屏幕，摄像头和白板...
（总结）阿里面试问了ArrayList，都问了啥？

2020年1月中国编程语言排行榜，python是2019增长最快编程语言

AI 没让人类失业，搞 AI 的人先失业了

2020年，冯唐49岁：我给20、30岁IT职场年轻人的建议

2020年刚刚开始，就意味着离职潮高峰的到来，我身边就有不少人拿着年终奖离职了，而最让我感到意外的，是一位工作十年的数据分析师也离职了，不同于别人的主动辞职，他是被公司炒掉的。 很多人都说数据分析是个好饭碗，工作不累薪资高、入门简单又好学。然而今年34的他，却真正尝到了中年危机的滋味，平时也有不少人都会私信问我： 数据分析师也有中年危机吗？跟程序员一样是吃青春饭的吗？该怎么保证自己不被公司淘汰...

B站是个宝，谁用谁知道???? 作为一名大学生，你必须掌握的一项能力就是自学能力，很多看起来很牛X的人，你可以了解下，人家私底下一定是花大量的时间自学的，你可能会说，我也想学习啊，可是嘞，该学习啥嘞，不怕告诉你，互联网时代，最不缺的就是学习资源，最宝贵的是啥？ 你可能会说是时间，不，不是时间，而是你的注意力，懂了吧！ 那么，你说学习资源多，我咋不知道，那今天我就告诉你一个你必须知道的学习的地方，人称...

【蘑菇街技术部年会】程序员与女神共舞，鼻血再次没止住。（文末内推）

Java校招入职华为，半年后我跑路了

Python全栈 Linux基础之3.Linux常用命令
Linux对文件（包括目录）有很多常用命令，可以加快开发效率：ls是列出当前目录下的文件列表，选项有-a、-l、-h，还可以使用通配符；c功能是跳转目录，可以使用相对路径和绝对路径；mkdir命令创建一个新的目录，有-p选项，rm删除文件或目录，有-f、-r选项；cp用于复制文件，有-i、-r选项，tree命令可以将目录结构显示出来（树状显示），有-d选项，mv用来移动文件/目录，有-i选项；cat查看文件内容，more分屏显示文件内容，grep搜索内容；>、>>将执行结果重定向到一个文件；|用于管道输出。
​两年前不知如何编写代码的我，现在是一名人工智能工程师

loonggg读完需要5分钟速读仅需 2 分钟大家好，我是你们的校长。我知道大家在家里都憋坏了，大家可能相对于封闭在家里“坐月子”，更希望能够早日上班。今天我带着大家换个思路来聊一个问题...
Spring框架|JdbcTemplate介绍

24岁的程序员，还在未来迷茫，不知道能不能买得起房子

Java基础知识面试题（2020最新版）