初识变量:
首先是变量的声明,因为是基于Python的语法,所以直接定义:a=3;
向量的定义需要用到tensorflow的相关函数:
向量相乘:
这时候直接输出结果显示的格式不是数值,因此我们需要转换,首先将所有全局变量初始化:
之后:
print之前转化:
常用的基本操作:
推荐使用float32,cpu和gpu都适合,防止出一些错误。
定义一个3行4列的矩阵,类型为int32:
仿照前面去定义:
第二行的like定义了一个和上面的tensor一样的2行3列的元素都是0的矩阵,第三行的ones定义了一个2行3列都是1的矩阵
创建一个矩阵同样需要用函数转化一下:
创建一个都是-1.0的2行3列矩阵:
创建一个从10开始,到12结束的一共三列的矩阵:
创建一个从3开始到18结束的左闭右开的以3为界的矩阵:
还可以随机创建满足限定条件的函数:
创建一个2行3列的均值为-1方差为4的矩阵:
还可以对定义好的矩阵进行随机换行操作:
用到了shuff函数:
结果:
计算:
定义state=0:state = tf.Variable(0)
使用函数将state和1相加:new_value = tf.add(state,tf.constant(1))
使用函数将new_value的值赋给state:update = tf.assign(state,new_value)
在for循环中,每执行一次循环都要重新run一次update,从而达到数据更新的目的:
将numpy的格式转换为tensorflow:
线性回归模型:
这里最开始我敲代码的时候报错,原因是没有在tensorflow中下载matplotlib,需要在Anaconda Promat中下载一个,其实我我conda list查看的时候是有matplotlib的,可能因为版本问题,我uninstall卸载之后重新下载了,重启客户端就能用了。虽然还报一个numpy版本过高,但是不影响图的出现和后面结果。版本过高可以直接降低版本,使用1.16.0就不报错了。
import numpy as np import tensorflow as tf import matplotlib.pyplot as plt # 随机生成1000个点,围绕在y=0.1x+0.3y的直线周围 num_points = 1000 vectors_set = [] for i in range(num_points): x1 = np.random.normal(0.0,0.55) y1 = x1*0.1 + 0.3+np.random.normal(0.0,0.03) vectors_set.append([x1,y1]) # 生成一些样本 x_data = [v[0] for v in vectors_set] y_data = [v[1] for v in vectors_set] plt.scatter(x_data,y_data,c='r') plt.show()
生成图像:
继续:
#生成一维的W矩阵,取值是【-1,1】之间的随机数 W = tf.Variable(tf.random_uniform([1],-1.0,1.0),name='W') #生成一维矩阵b,初始值为0 b = tf.Variable(tf.zeros([1]),name='b') #经过计算得出预估值y y = W*x_data+b #以预估值y和实际值y_data之间的均方差作为损失 loss = tf.reduce_mean(tf.square(y-y_data),name='loss') #采用梯度下降法优化参数 optimizer = tf.train.GradientDescentOptimizer(0.5) #训练的过程就是最小化这个误差值 train = optimizer.minimize(loss,name='train') sess = tf.Session() init = tf.global_variables_initializer() sess.run(init) #初始化的W和b print ("W=",sess.run(W),"b=",sess.run(b),"loss=",sess.run(loss)) #训练20次 for step in range(20): sess.run(train) #输出训练好的w和b print ("W=",sess.run(W),"b=",sess.run(b),"loss=",sess.run(loss))
结果:第一行是最开始的初始化的w和b,往后是每次训练输出的w和b,w越来越趋近于0.1,b越来越趋近于0.3,loss越来越小。
mnist数据集:
只是简单地介绍了一下,给看了几张图片,另外我在import的时候并没有出错
后面一节也是讲解了一些函数和导入包
今日学习结束,敲代码+看视频+解决问题总共历时大约7小时。