神经网络搭建及训练

问题引入:

image.png

image.png

如果已知两位同学的成绩:

90 * w1 + 80 * w2 + 70 * w3 = 85

98 * w1 + 95 * w2 + 87 * w3 = 96


两个方程求三个未知数无法求解

因此采用神经网络解决该问题:

image.png

用TensorFlow实现神经网络的代码:

import tensorflow as tf                     #引入TensorFlow类库

x = tf.placeholder(dtype=tf.float32)        #x为占位符,作为神经网络的输入节点,接受德智体三门分数,类型为浮点数
ytrain = tf.placeholder(dtype=tf.float32)   #ytrain占位符,作为结果

w = tf.Variable(tf.zeros([3]), dtype=tf.float32)   # 定义三个可变参数,初始值设为0

wm = tf.nn.softmax(w)                              # 将一个向量规范化为一个所有数值相加和为1的新向量

y = wm * x                                         #y为总分  [90, 80, 70] * [0.6, 0.3, 0.1] = 90 * 1 + 80 * 2 + 70 * 3

yresult = tf.reduce_sum(y)                         #将数组中所有数字相加求和得到一个标量

loss = tf.abs(ytrain - yresult)
optimizer = tf.train.RMSPropOptimizer(0.1)         # 优化器
train = optimizer.minimize(loss)                   #训连最小误差

sess = tf.Session()                                #定义神经网络的会话对象,并初始化所有的可变参数
init = tf.global_variables_initializer()
sess.run(init)
for i in range(10000):
    result = sess.run([train, w, wm, yresult, loss], feed_dict={x: [90, 80, 70], ytrain:85})  
    #用三门分数送入神经网络来运行该神经网络并获得该神经网络输出的节点值
    result = sess.run([train, w, wm, yresult, loss], feed_dict={x: [98, 95, 87], ytrain: 96})

print(result)



果已知两位学生的成绩

如果已知两位学生的成绩如果已知两位学生的成绩

发表评论

邮箱地址不会被公开。

Captcha Code