完成线性模型的构建
import tensorflow as tf import os from tensorflow.contrib.learn.python.learn.datasets.mnist import read_data_sets from mnist import model data = read_data_sets('MNIST_data', one_hot=True) with tf.variable_scope('regression'): x = tf.placeholder(tf.float32, [None, 784]) y, variables = model.regression(x) _y = tf.placeholder('float', [None, 10]) cross_entropy = -tf.reduce_sum(_y * tf.log(y)) train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy) correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(_y, 1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) saver=tf.train.Saver(variables) with tf.Session() as sess: sess.run(tf.global_variables_initializer()) for _ in range(1000): batch_xs,batch_ys=data.train.next_batch(100) sess.run(train_step,feed_dict={x:batch_xs,_y:batch_ys}) print(sess.run(accuracy,feed_dict={x:data.test.images,_y:data.test.labels})) path=saver.save(sess,os.path.join(os.path.dirname(__file__),'data','regression.ckpt'),write_meta_graph=False,write_state=False) print('Saver:'+path)
最终保存了训练好的模型
1.开始训练,训练完之后进行保存:
# 参数进行保存
saver = tf.train.Saver(variables)
# 开始训练
with tf.Session() as sess:
sess.run(tf.global_variables_initializer()) # 把全部的参数放进来,进行全局初始化
for _ in range(1000): # 训练1000次
batch_xs, batch_ys = data.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) # feed_dict:喂参数,x放的batch_xs,y_放的batch_ys
print((sess.run(accuracy, feed_dict={x: data.test.images, y_: data.test.labels}))) # 打印测试集的图像和标签
path = saver.save(
# 把数据存进去,把这个模型的名字存成regression.ckpt,在这里注意data文件夹的创建
sess, os.path.join(os.path.dirname(__file__), 'data', 'regression.ckpt'),
write_meta_graph=False, write_state=False # 写到图中
) # 把数据或者说是参数或者说是模型存起来
print('Saved:', path) # 把保存模型的路径打印出来
https://github.com/GeoLibra/mnist_test.git