3.4 TensorFlow实现神经网络
使用神经网络解决分类问题可以分为以下四步:
1.提取问题中实体的特征向量作为神经网络的输入
2.定义神经网络的结构,并定义如何从神经网络的输入得到输出(前向传播)
3.通过训练数据来调整神经网络中的参数(反向传播)
4.使用训练好的数据来预测未知的数据
整个过程分需要三部分信息:
第一个部分是神经网络的输入,这个输入就是从实体中获取的特征向量。如上图的x1和x2
第二个部分是神经网络的连接结构。连接结构给出的是上面不同神经元(也可以称为节点)之间输出输入的连接关系
最后一个部分是每个神经元之中的参数,如下:
对于上面的计算W*x,可以用下面的方法结果:
a = tf.matmul(x, w1) # 实现了矩阵的乘法功能
3.4.3 神经网络参数与TensorFlow变量
在TensorFlow中,使用变量(tf.Variable)来保存和更新网络中的参数,需要指定初始值
一般在神经网络中会给参数赋予随机初始值,如下是声明一个2x3矩阵变量的方法:
weights = tf.Variable(tf.random_normal([2, 3], stddev=2))
# [2, 3]制定了变量的维度是一个2x3的矩阵,stddev表示这些随机数的标准差为2,
# 还可以通过mean来指定所有数的均值,不指定的时候默认是0,所以上面weights的均值是0
以下是一些其他随机数生成器:
TensorFlow中变量的初始值可以设置成随机数、常数或者是通过其他变量的初始值计算得到 。
以下是一些常量的定义方法:
在神经网络中,通常b值通过常数来设置初始值:
b = tf.Variable(tf.zeros([3])) # s生成一个初始值全部为0,长度为3的一维数组
通过其他变量的初始值获取新变量的方法如下:
w2 = tf.Variable(weights.initialized_value())