使用TensorFlow进行机器学习入门篇(一)~实现三层简单全连接前馈神经网络

三层简单全连接前馈神经网络

这里构建了一个由输入层,一层隐藏层,输出层的三层简单全连接前馈神经网络,输入层的节点为两个,隐藏层的节点为三个,输出层的节点为一个

# 导入1.2版本的TensorFlow
import tensorflow as tf

构建模拟输入层的数据

构建神经网络的输入 x,相当于流入神经网络的数据,这里为一行两列的小数,注意这里的列数要和输入层的节点数保持一致

x = tf.constant([0.9,0.85],shape=[1,2])

初始化层与层之间连接的权重

这里使用tf.random_normal随机正态分布函数来随机初始化w1和w2权重的值,这里的标准差属性stddev设置的值为1

# w1代表的是输入层到隐藏层的权重,即每个输入层的节点与隐藏层的所有节点相连线的权重,同时一个输入层的节点与三个隐藏层的节点相连,
# 这里输入层的节点有两个,w1的形状为2*3
w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=1),name='w1')

# w2代表的是隐藏层到输出层的权重,因为隐藏层的节点数为3,输出层的节点数为1,则w2的形状为3*1,
# seed这个参数为随机数种子,保证每次运行的结果相同
w2 = tf.Variable(tf.random_normal([3,1],stddev=1,seed=1),name='w2')

初始化层与层之间连接的偏置项

这里将输入层到隐藏层的偏置项全部设置为初始值全为0的13矩阵(注意因为偏置项的特点,导致偏置项的第一个维度的值始终为1,第二维度与下一层的节点数保持一致,例如这里输入层到隐藏层,隐藏层的节点数为3,则形状为13)即b1,将隐藏层到输出层的偏置项全部设置为初始值全为1的1*1矩阵即b2

b1 = tf.Variable(tf.zeros([1,3]))
b2 = tf.Variable(tf.ones([1]))

构建三层简单全连接前馈神经网络的计算图,并流动运行

# 初始化全体变量,对于1.2版本的TensorFlow是必要的
init_op = tf.global_variables_initializer()

# 隐藏层,其数值等于输入层的值x与输入层到隐藏层的权重w1矩阵相乘,再加上该两层之间的权重b1
a = tf.matmul(x,w1) + b1

# 输出层,其数值等于隐藏层的值a与隐藏层到输出层的权重w2矩阵相乘,再加上该两层之间的权重b2
y = tf.matmul(a,w2) + b2

# 创建一个会话并运行对于输出层y
with tf.Session() as sess:
    # 必须运行初始化全体变量这个操作不然会报错
    sess.run(init_op)
    print(sess.run(y))

最后打印结果:[[5.422497]]

水平有限,如有不足,欢迎各位大佬指出,原创手动码字,欢迎大家点赞收藏!

你可能感兴趣的:(tensorflow,深度学习,神经网络,机器学习,自然语言处理)