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

本文主要是介绍搭建解决三好学生成绩问题的神经网络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*x3y = 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,结果正确。

这篇关于搭建解决三好学生成绩问题的神经网络01---初步认识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/621473

相关文章

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,

解决Spring运行时报错:Consider defining a bean of type ‘xxx.xxx.xxx.Xxx‘ in your configuration

《解决Spring运行时报错:Considerdefiningabeanoftype‘xxx.xxx.xxx.Xxx‘inyourconfiguration》该文章主要讲述了在使用S... 目录问题分析解决方案总结问题Description:Parameter 0 of constructor in x

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

Java循环创建对象内存溢出的解决方法

《Java循环创建对象内存溢出的解决方法》在Java中,如果在循环中不当地创建大量对象而不及时释放内存,很容易导致内存溢出(OutOfMemoryError),所以本文给大家介绍了Java循环创建对象... 目录问题1. 解决方案2. 示例代码2.1 原始版本(可能导致内存溢出)2.2 修改后的版本问题在

大数据小内存排序问题如何巧妙解决

《大数据小内存排序问题如何巧妙解决》文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限... 目录三种方法:方法概要数据库排序(http://www.chinasem.cn对数据库设备要求较高)分治法(常

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje