完成线性模型的构建
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