搭建解决三好学生成绩问题的神经网络01---初步认识

 问题背景:

           某学校要评选三好学生,总分计算规则德育分占60%,智育分占30%,体育分占10%。即总分=德育分*0.6+智育分*0.3+体育分*0.1。

问题引入:

          在该背景下,现在有两个孩子家长想知道自己的孩子是不是三好学生,但是学校没有告诉家长总分的计算规则。家长们猜测出计算总分的方法肯定是3项分数乘以不同的权重值相加获得,唯一不知道的就是这几个权重值具体多少?我们可以通过神经网络方法大致推算这3个权重分别多少。

问题分析:

已经条件

      家长1的孩子的德育分90,智育分80,体育分70,总分85

      家长2的孩子的德育分98,智育分95,体育分87,总分96

      从数学角度来看,根据已知的条件我们可以设德育分占w1,智育分占w2,体育分占w3。即

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

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

       数学中解方程的方法来看,两个式子一共有3个未知数,理论上需要三个不等价式子,可以解出答案。但是现在我们只用这两个方程。那么我们可以考虑使用神经网络的方法来尝试进行解答这个问题。

神经网络介绍:

神经网络模型一般由1个输入层,1个或者多个隐藏层,1个输出层构成。

一般来说

        输入层  是描述输入数据的形态的,用方块表示每条输入数据的一个数,叫作输入节点。输入节点一般用x来命名。

        隐藏层   是描述我们设计神经网络模型结构中最重要的部分,隐藏层可以有多个,每一层多有1个或者多个神经元,用圆表示,叫作神经元节点或者隐藏节点(节点),每一个节点都是接收上一层传来的数据并进行一定的运算后向下一层输出数据。

        输出层  是描述输出数据的形态的,用菱形表示一个或者多个输出节点,输出节点一般用y来命名。

代码实现:

根据问题分析,我们可以使用神经网络来简单的实现

#Author:北京
#QQ:838262020
#time:2019/9/13
''''
三好学生成绩问题的引入
总分 = 德育分*60% + 智得分*30% + 体育分 *10%
'''
# 导入TensorFlow包
import tensorflow as tf

# 定义三个占位符,数据类型为浮点型,我们把可变参数的初始值都设为0.1
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,n2,n3
n1= w1*x1
n2 = w2*x2
n3 = w3*x3

y = n1+n2+n3

# 定义输出层
# 会话对象,有个会话对象我们的神经网络可以进行正常运转了,每次神经网络定义完,都要定义一个会话对
# 象,才能开始训练这个模型或者用训练好的模型去预测计算。
sess = tf.Session()

# 会话对象神经网络的第一步---所有可变参数初始化,也就是给所有可变参数一个各自的初始值。
# 初始化可变参数,我们前面把可变参数初始值都设为0.1
init = tf.global_variables_initializer()
sess.run(init)

# 输出要查看的变量和喂(输入)数据,执行一次神经网络计算
result = sess.run([x1,x2,x3,w1,w2,w3,y],feed_dict={x1:90,x2:80,x3:70})
print(result)

输出结果

[array(90.0, dtype=float32), array(80.0, dtype=float32), array(70.0, dtype=float32), 0.1, 0.1, 0.1, 24.0]

我们可以知道定义的w1,w2,w3的初始值都是0.1,经过计算90*0.1+80*0.1+70*0.1=9+8+7=24,结果正确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值