使用TensorFlow 构建简单的线性模型,模型使用以及使用tensorboard显示
直接上代码:
#coding:utf-8
import tensorflow as tf
import numpy as np
from pip._vendor.requests.sessions import session
# create a input placeholder to as a input struct flag
data_x=tf.placeholder(tf.float32,[None])
#define y
data_y=3.1*data_x+2
# create w and b variable
W=tf.Variable(tf.random_uniform([1], 0, 1, tf.float32))
b=tf.Variable(tf.zeros([1], tf.float32))
# opti function
y=W*data_x+b
#loss
loss=tf.reduce_mean(tf.square(y-data_y))
#summary loss summary
tf.summary.scalar("summaryloss", loss)
#Optimizer
optimizer=tf.train.GradientDescentOptimizer(0.5)
train=optimizer.minimize(loss)
#get all variable initer
init=tf.global_variables_initializer()
#get variable saver object to save the final model
saver=tf.train.Saver()
#merge all summary to be saved
summary=tf.summary.merge_all()
#get graph
sess=tf.Session()
#define where to write summary logs and how to write
summarywrite=tf.summary.FileWriter('logs/',sess.graph)
#init all variable
sess.run(init)
#create train data set according data_x struct
data_x_train=np.random.rand(100).astype(np.float32)
for step in range(1000):
sess.run(train,{data_x:data_x_train}) #start training
if(step%10==0):
summary_str=sess.run(summary,{data_x:data_x_train})
summarywrite.add_summary(summary_str, step)
summarywrite.flush()
print step," ",sess.run(W)," ",sess.run(b) #when in this step, get it W and b
if((step+1)%1000==0):#save the final model to predict
saver.save(sess, 'checkpoint/model.chpt')
sess.close()
# use saved model to predict
with tf.Session() as sess:
#pre data set
data_x_pre=[1,2,3,4]
# load saved model
saver.restore(sess, 'checkpoint/model.chpt')
#predict (y is a fetch lag)
y_out=sess.run(y,feed_dict={data_x:data_x_pre})
print y_out
打开控制台,输入:
tensorboard –logdirs=logs
在浏览器中就可打开6006端口查看