声明:内容来自MOOC北京大学,人工智能实践基础:Tensorflow笔记
一.参数:即图线上的权重W,用变量表示,随机给初值。
W = tf.Variable(tf.random_normal([2,3], stddev=2, mean=0, seed=1))
正态分布 产生2*3矩阵 标准差为2 均值为0 随机种子为1
Tf.random_normal()可用下面两个函数替代
(1)tf.truncated_normal()去掉过大偏离点的正态分布(两个标准差之内)
(2)tf.random_uniform()平均分布
tf.zeros 全0数组 tf.zeros([3,2],int32)生成[[0,0],[0,0],[0,0]]
tf.ones 全1数组 tf.ones([3,2],int32)生成[[1,1],[1,1],[1,1]]
tf.fill 全定值数组 tf.fill([3,2],6)生成[[6,6],[6,6],[6,6]]
tf.constant直接给值 tf.constant([3,2,1])生成[3,2,1]
二.神经网络的实现过程:
1.准备数据集,提取特征,作为输入喂给神经网络(Neutral Network. NN)
2.搭建NN结构,从输入到输出(先搭建计算图,在用会话执行)
NN前向传播算法–>计算输出
3.大量特征数据喂给NN,迭代优化NN参数
NN反向传播算法–>优化参数训练模型
4.使用训练好的模型预测和分类
三.前向传播:搭建模型,实现推理(以全连接网络为例)
eg。生产一批零件将体积X1重量X2为特征输入NN,通过NN后输出一个值。
四.实现细节
变量初始化,计算图节点运算要用绘画(with结构)实现
with tf.Session() as sess:
sess.run()
变量初始化:在sess.run函数中用tf.global_variable_initializer()
init_op=tf.global_variables_initializer()
Sess,.run(init_op)
计算图节点运算:在sess.run函数中写入待运算的节点
Sess.run(y)
用tf.placeholder占位,在sess.run函数中用feed_dict喂数据
(1)喂一组数据:
x=tf.placeholder(tf.float32,shape=(1,2))
Sess.run(y,feed_dict={x:[[0.5,0.6]]})
(2)喂多组数据:
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.4,0.5]]})
代码
喂一组数据
#coding:utf-8
#两层简单神经网络(全连接)
import tensorflow as tf
#定义输入和参数
x = tf.constant([[0.7,0.5]])
w1= tf.Variable(tf.random_normal([2,3], stddev=1, seed=1))
w2= tf.Variable(tf.random_normal([3,1], stddev=1, seed=1))
#定义向前传播过程
a = tf.matmul(x, w1)
y = tf.matmul(a, w2)
#用会话计算结果
with tf.Session() as sess:
init_op = tf.global_variables_initializer()
sess.run(init_op)
print("y in tf3.2.py is:\n",sess.run(y))
#结果
#y in tf3.2.py is:
# [[3.0904665]]
喂多组数据
#coding:utf-8
#两层简单神经网络(全连接)
import tensorflow as tf
#定义输入和参数
#用placeholder定义输入(sess.run喂多组数据)
#不知道喂多少组输入,所以用None,特征为体积,质量,2维度
x = tf.placeholder(tf.float32, shape=(None, 2))
#随机生成正态分布,方差为1
w1= tf.Variable(tf.random_normal([2,3], stddev=1, seed=1))
w2= tf.Variable(tf.random_normal([3,1], stddev=1, seed=1))
#定义向前传播过程
a = tf.matmul(x, w1)
y = tf.matmul(a, w2)
#调用会话计算结果
with tf.Session() as sess:
init_op = tf.global_variables_initializer()
sess.run(init_op)
print("the result of py is:\n",sess.run(y, feed_dict={x: [[0.7,0.5],[0.2,0.3],[0.3,0.4],[0.4,0.5]]}))
print("w1:\n",sess.run(w1))
print("w2:\n",sess.run(w2))
#结果
'''the result of py is:
[[3.0904665]
[1.2236414]
[1.7270732]
[2.2305048]]
w1:
[[-0.8113182 1.4845988 0.06532937]
[-2.4427042 0.0992484 0.5912243 ]]
w2:
[[-0.8113182 ]
[ 1.4845988 ]
[ 0.06532937]]'''