1.python串讲
- 打开vim,并保存退出
- vim b.py内容,并解决汉字兼容性的问题
for循环:
实现打印5个h
以及次数
x y
turtle模块画出正方形。
类的学习:
2.tensorflow
张量tensor :即为多维数组,一个方括号就代表一阶张量。
搭建Tensor之后,只表示运算过程不计算结果,也就是只是搭建计算图
计算图(graph):搭建神经网络的计算过程,并且只搭建并不运算
会话(Session):执行计算图中的节点运算用with语句
with tf.Session() as sess:
print sess.run(y)
2.1 前向传播
参数:网络线上的权重,用变量表示,随机给初值。
w=tf.Variable(tf.random_normal([2,3])#产生两行三列的矩阵#,stddev=2#标准差为2#,mean=0#均值为0#,seed=1#随机种子#))
正态分布也可变为: tf.truncated_normal()#去掉过大偏离点的正态分布 ,truncated为截断的意思。也可换为tf.random_uniform()为平均分布。
另外:
tf.zeros([3,2],int32),生成3行2列全零数组
tf.ones([3,2],int32),生成3行2列全一数组
tf.fill([3,2],6) 生成定制数组 3行2列全6数组
tf.constant([3,2,1])生成【3,2,1】一行三列数组
神经网络实现过程
- 准备数据集,提取特征,作为输入喂给神经网络
- 搭建NN结构,从输入到输出(先搭建计算图,再用会话执行) #前向传播算法,计算输出
- 大量特征数据喂给NN,迭代优化NN参数 #反向传播算法,优化模型参数
- 使用训练好的模型预测与分裂
前向传播相关函数计算:
- 变量初始化,计算图节点运算运用会话(session)实现:
with tf.Session() as sess:
sess run()- 变量初始化:在sess.run函数中用tf.global_variables_initializer():
init_op=tf.global_variables_initializer()
sess.run(init_op)- 计算图节点运算:在sess.run函数中写入待计算的节点:
sess.run(y)- 用tf.placeholder占位,在sess.run函数中用feed_dict喂数据
喂一组数据:
x=tf.placeholder(tf.float32,shape=(1,2))
sess.run(y,feed_dict={x:[[0.5,0.6]]})
喂多组数据:
x=tf.placeholder(tf.float32,shape=(None,2))
sess.run(y,feed_dict={x:[[0.1,0.2],[0.2,0.3],[0.3,0.4],[0.5,0.6]]})
利用x=tf.placeholder(tf.float32,shape=(1,2))占位,输入可以输入多组数据
在用sess计算的时候,通过feed dict 函数进行微数据,进行初始化网络输入,进而得到输出
利用此种方法,可以进行多组数据的输入。
2.2反向传播
反向传播:训练模型参数,在所有参数上用梯度下降,使NN模型在训练数据上的损失函数最小
损失函数:预测值与已知答案的差距
反向传播训练方法:以减小loss值为优化目标
trian_step=tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)
train_step=tf.train.MomentumOptimizer(learning_rate,momentum).minimize(loss)
train_step=tf.train.AdamOptimizer(learning_rate).minimize(loss)
学习率设为:0.001
损失函数:
自定义损失函数:
概率分布的距离是??
交叉熵为一个评判标准,评判概率分布距离标准答案的距离,越近就代表越准
可以用下面的两个函数代替上面的ce
学习率:
学习率的设置:
设置动态学习率:
代码段只是:
global_step=tf.Variable(0,trainable=False)
learning_rate=tf.train.expoential_decal(
滑动平均(影子)值:
由公式递归可求得影子值,
表示滑动平均值的函数中有个固定的函数值为:ema_op=ema.apply(tf.trainable_variables())可以对所有待优化的参数求滑动平均
总的来说,滑动平均值也就是影子值是为了平滑数据集,减少噪音和异常,类似于momentum,都有惯性,如果参数太大,整个曲线就会有滞后性,和真正的数据产生偏差。具体内容参照:https://blog.csdn.net/huqinweI987/article/details/88241776
正则化缓解过拟合
正则化就是在损失函数中引入模型复杂度指标,给W加权,同样可以弱化噪声,具体算法如下:
matplotlib 模块的使用:
全连接网络基础:
重用函数列表:
模型的保存和加载:
网络搭建过程: