1 #-*- coding:UTF8 -*- 2 #梯度下降法解决线性回归 3 import numpy as np 4 import matplotlib.pyplot as plt 5 import tensorflow as tf 6 7 #构建数据 8 point_nums = 100 9 vector = [] 10 11 #用numpy的正态随机分布函数生成100个点 12 #这些点(x,y)对应线性方程 y = 0.5 * x + 0.05 13 #权重(Weight)0.5,偏差(Bias)0.05 14 for i in range(point_nums): 15 x1 = np.random.normal(0.0, 0.4) 16 y1 = 0.5 * x1 + 0.05 + np.random.normal(0.0, 0.2) 17 vector.append([x1,y1]) 18 19 x_data = [v[0] for v in vector] 20 y_data = [v[1] for v in vector] 21 22 23 plt.plot(x_data,y_data,'r*',label='original_data') 24 plt.legend() 25 plt.show() 26 27 #构建线性模型 28 W = tf.Variable(tf.random_uniform([1],-1,1)) #random_uniform(shape, minval,maxval,dtype=tf.float32,seed=None,name=None) 29 b = tf.Variable(tf.zeros([1])) 30 y = W * x_data + b 31 32 #定义损失函数loss function 或 cost function 33 loss = tf.reduce_mean(tf.square(y-y_data)) 34 35 #梯度下降优化器来进行优化loss function 36 optimizer = tf.train.GradientDescentOptimizer(0.5) #learning_rate = 0.5 37 train = optimizer.minimize(loss) 38 39 #创建会话Sessions() 40 sess = tf.Session() 41 42 #全局初始化 43 init = tf.global_variables_initializer() 44 sess.run(init) 45 46 #训练20次 47 for step in range(20): 48 #优化每一步 49 sess.run(train) 50 print('step:%s, train:%s, weight:%s, bias:%s'%(step, sess.run(train), sess.run(W), sess.run(b))) 51 52 plt.plot(x_data, y_data, 'r*', label = 'original_data') 53 plt.plot(x_data, sess.run(W) * x_data + sess.run(b), 'b', label = 'fitting_line') 54 plt.legend() 55 plt.show() 56 57 sess.close()
刚开始学习Tensorflow,发现tf确实是一个很强大的框架,内置函数很多,np里面有的tf内大部分也有,并且能用matplotlib包像matlab一样绘制图像。
并且在对于在对于建模上面google做的越来越好,增加了tensorboard和playground,虽然暂时还未用到实际练习当中 : (
对于learning rate的设置和优化loss_function的方法,还需进一步学习!