第7周
这周主要研究tensorflow的使用及其功能。tensorflow是深度学习的必须品,评价GPU的效率是CPU的好几十倍。网上看到好像现在有TPU,虽然不知道有多快,但是肯定比GPU还要快把。
基本操作:
# import tensorflow as tf # print(tf.__path__) import tensorflow as tf import os os.environ["CUDA_VISIBLE_DEVICES"]="0" # #创建两个常量节点a,b # a=tf.constant(2) # b=tf.constant(3) # # #创建一个Session会话对象,调用run方法,运行计算图 # with tf.Session() as sess: # print("a:%i" % sess.run(a),"b:%i" % sess.run(b)) # print("常数加法:%i" % sess.run(a+b)) # print("常数乘法: %i" % sess.run(a*b)) #------------------------------------------------------------------------------- # #使用变量Variable构造计算图a,b # a=tf.placeholder(tf.int16) # b=tf.placeholder(tf.int16) # #使用tf中的add,multiply函数对a,b进行求和与求积操作 # add=tf.add(a,b) # multiply=tf.multiply(a,b) # #创建一个Session会话对象,调用run方法,运行计算图 # with tf.Session() as sess: # print("add函数调用:%i" % sess.run(add,feed_dict={a:2,b:3})) # print("multiply函数调用: %i" % sess.run(multiply,feed_dict={a:2,b:3})) #------------------------------------------------------------------------------- #构造计算图,创建两个矩阵常量节点matrix1,matrix2,值分别为[[3.,3.]],[[2.],[2.]] matrix1=tf.constant([[3.,3.]]) matrix2=tf.constant([[2.],[2.]]) #构造矩阵乘法运算 product=tf.matmul(matrix1,matrix2) #创建一个Session会话对象,调用run方法,运行计算图 with tf.Session() as sess: result = sess.run(product) print("matmul矩阵函数:",result)
线性回归:
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt import os os.environ["CUDA_VISIBLE_DEVICES"]="0" #设置训练参数 learning_rate=0.01 training_epochs=1000 display_step=50 #创建训练数据 train_x=np.asarray([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59 ,2.167,7.042,10.791,5.313,7.991,5.654,9.27,3.1]) train_y=np.asarray([1.7,2.76,2.09,3.19,1.694,1.573,3.366,2.596,2.53 ,1.221,2.827,3.465,1.65,2.904,2.42,2.94,1.3]) n_samples=train_x.shape[0] #构造计算图,使用变量Variable构造变量X,Y X=tf.placeholder("float") Y=tf.placeholder("float") #设置模型的初始权重 w=tf.Variable(np.random.randn(),name="weight") b=tf.Variable(np.random.randn(),name="bias") #构造线性回归模型 pred=tf.add(tf.multiply(X,w),b) #求损失函数,即均方差 cost=tf.reduce_sum(tf.pow(pred-Y,2))/(2*n_samples) #使用梯度下降法求最小值,即最优解 optimizer=tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) #初始化全部变量 init=tf.global_variables_initializer() #使用tf.Session()创建Session会话对象,会话封装了Tensorflow运行时的状态和控制。 with tf.Session() as sess: sess.run(init) #调用会话对象sess的run方法,运行计算图,即开始训练模型 for epoch in range(training_epochs): for(x,y) in zip(train_x,train_y): sess.run(optimizer,feed_dict={X:x,Y:y}) if(epoch+1) % display_step==0: c=sess.run(cost,feed_dict={X:train_x,Y:train_y}) print("Epoch:", '%04d' % (epoch+1), "cost=","{:.9f}".format(c),"w=",sess.run(w),"b=",sess.run(b)) #打印训练模型的代价函数 print("训练模型的代价函数:") training_cost=sess.run(cost,feed_dict={X:train_x,Y:train_y}) print("Train cost=",training_cost,"W=",sess.run(w),"b=",sess.run(b)) #可视化,展现线性模型的最终结果 plt.plot(train_x,train_y,'ro',label='Original data') plt.plot(train_x,sess.run(w)*train_x+sess.run(b),label="Fitting line") plt.legend() plt.show()