初识TensorFlow,如何深入理解应用?
摘要:了解引入的需要神经网络解决的问题 学习用神经网络的基本结构、表达方式和编程实现 学习训练神经网络的基本方法 三好学生成绩问题 总分 = 德育分 * 60% + 智育分 * 60% + 体育分 * 60%
了解引入的需要神经网络解决的问题
学习用神经网络的基本结构、表达方式和编程实现
学习训练神经网络的基本方法
三好学生成绩问题
总分 = 德育分 * 60% + 智育分 * 60% + 体育分 * 60%
假设家长不知道这个规则,已知:
学校一定是以德育分、智育分和体育分三项分数的总分来确定三好学生的
计算总分时,三项分数应该有各自的权重系数
各自孩子的三项分数都已经知道,总分也已经知道
经过家长们的分析,只有三项分数各自乘以的权重系数是未知的。问题演变成求解方程:w1x + w2y + w3z = A 中的三个 w 即权重。其中 x、y、z、A 分别对应几位学生的德育分、智育分、体育分和总分。
两个方程式解三个未知数无法求解:
90w1 + 80w2 + 70w3 = 85
98w1 + 95w2 + 87w3 = 96
搭建对应的网络神经
神经网络模型图的一般约定:
神经网络图一般包含一个输入层、一个或多个隐藏层,以及一个输出层
输入层是描逑输入数据的形态的(输入节点)
隐藏层是描迒神经网络模型结构中最重要的部分隐藏层可以有多个;每一层有一个或多个神经元(神经元节点/节点);每个节点接收上层的数据并进行运算向下层输出数据(计算操作/操作)
输出层一般是神经网络的最后一层,包含一个或多个输出节点
神经网络的代码:
import tensorflow as tf
x1 = tf.placeholder(dtype = tf.float32)
x2 = tf.placeholder(dtype = tf.float32)
x3 = tf.placeholder(dtype = tf.float32)
w1 = tf.Variable(0.1, dtype = tf.float32)
w2 = tf.Variable(0.1, dtype = tf.float32)
w3 = tf.Variable(0.1, dtype = tf.float32)
n1 = x1 * w1
n2 = x2 * w2
n3 = x3 * w3
y = n1 + n2 + n3
sess = tf.Session()
init = tf.global_variable_initializer()
sess.run(init)
result = sess.run([x1, x2, x3, w1, w2, w3, y], feed_dict={x1: 90, x2: 80, x3: 70})
print(result)
x1 = tf.placeholder(dtype = tf.float32)
x2 = tf.placeholder(dtype = tf.float32)
x3 = tf.placeholder(dtype = tf.float32)
通过 tf.placeholder 定义三个占位符(placeholder),作为神经网络的输入节点,来准备分别接收德育、智育、体育三门分数作为神经网络的输入。dtype 是 data type 的缩写,dtype = tf.float3 是命令参数,tf.float32 代表 32 位小数。
w1 = tf.Variable(0.1, dtype = tf.float32)
w2 = tf.Variable(0.1, dtype = tf.float32)
w3 = tf.Variable(0.1, dtype = tf.float32)
通过 tf.Variable() 定义三个可变参数。
n1 = x1 * w1
n2 = x2 * w2
n3 = x3 * w3
n1、n2、n3 是三个隐藏层节点,实际上是他们的计算算式。
y = n1 + n2 + n3
定义输出节点 y,也就是总分的计算公式(加权求和)。至此,神经网络模型的定义完成。
sess = tf.Session()
定义神经网络的会话对象
init = tf.global_variable_initializer()
tf.global_variable_initializer() 返回专门用于初始化可变参数的对象。
sess.run(init)
初始化所有的可变参数。
result = sess.run([x1, x2, x3, w1, w2, w3, y], feed_dict={x1: 90, x2: 80, x3: 70})
print(result)
[x1, x2, x3, w1, w2, w3, y] 为要查看的结果项,feed_dict={x1: 90, x2: 80, x3: 70} 为输入的数据。
