一、线性回归
函数模型:y=wx+b+e
e为观测误差,此误差服从某一分布。多数据求解w和b。
误差函数越来越小
梯度下降满足loss越来越小
1、计算loss
2、计算梯度
3、循环使得梯度最小。
代码使用mnist
实例训练中:db=db.batch(32).repeat(10) #一次喂32个数据,设置迭代次数为10次
step=总数据量*epoch(repeat)/batch_size
设置重复训练次数为10次,使得效果变得更好。
二、tensorflow基础操作
(一)基本类型
1、TF:是一个科学计算库,与numpy类似,使用的类型有:int、float、double、bool、string
2、numpy或者list转换为tensor:convert_to_tensor()
3、初始化:
tf.zeros([]) 0维
tf.zeros([1]) 1维
tf.zeros([2,2]) 2维长度为2
tf.fill([2,2],9) 2行2列填充是9
tf.random.normal([2,2],mean=1,stddev=1)初始化正态分布的,均值为1,方差为1
tf.random.truncatednormal([2,2],mean=1,stddev=1)初始化截断正态分布
tf.random.uniform([2,2]minval=0,maxval=1)初始化均匀分布在[0,1]区间
(二)索引与切片
1、例如 tf.random.normal([4,28,28,3])表示4张28*28大小3通道的照片
a[1,2,4] 取到的是第一张照片的第三行第五列的值省去很多中括号。
切片符号:’:’ 左闭右开
2、取数据:引入步长 A:B:4从A到B隔4个取一个数据
单冒号取全部,双冒号取部分
对于a[4,28,28,3]的图片数据
tensor中的索引进行数据采样的时候,a[:,0:28:2,0:28:2,:]得到的是tensorshape([4,14,14,3])
这里的第二个的0:28:2指的是四张图片的从0行到27行隔一行取样,下面的列也同样,最后的“:”指的是全部通道
3、… 采样方式:可以代表任意长的冒号,连续的冒号。即全部都取的维度
4、抽样调查:例子
数据a[4,35,8]表示4个班级35个学生8门课程
利用gather可以进行指定维度的不按顺序的抽样
tf.gather(a,axis=0,indices=[2,3]).shape
TensorShape([2,35,8])
表示的是取到取第2、3个班级的学生的8门课程
indices是从1开始
5、tf.boolean_mask:
例子:a=tf.ones([2,3,4])
tf.boolean_mask(a.mask=[[True,False,False],[False,True,True]])
取出的数据是3行4列的矩阵,4为特征,默认axis=0.从第一维开始取。
6、reshape为重构形状,在数据量不变的情况下可以进行重整视图,总量不变。
tf.transpose:content的变换
7、增加维度减少维度:
增加维度:指定的维度为正则会在指定维度之前增加一个,若为负数则在指定维度之前增加
8、减少维度:
9、broadcasting:维度不一致进行添加维度。将数据进行加减乘除的时候可以将维度扩张。
10、不可以用于broardingcast的情况(此例中的4个)
进行矩阵相加的时候维度自动扩张
11、
tf.math.log,tf.exp
log是以e为底的,要想换底,需要进行除法运算
@、matmul 矩阵相乘,对应元素相乘。
a@b或者 tf.matmul(a,b)