搭建解决三好学生成绩问题的神经网络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

相关文章

Android 12解决push framework.jar无法开机的方法小结

《Android12解决pushframework.jar无法开机的方法小结》:本文主要介绍在Android12中解决pushframework.jar无法开机的方法,包括编译指令、框架层和s... 目录1. android 编译指令1.1 framework层的编译指令1.2 替换framework.ja

MySQL主从同步延迟问题的全面解决方案

《MySQL主从同步延迟问题的全面解决方案》MySQL主从同步延迟是分布式数据库系统中的常见问题,会导致从库读取到过期数据,影响业务一致性,下面我将深入分析延迟原因并提供多层次的解决方案,需要的朋友可... 目录一、同步延迟原因深度分析1.1 主从复制原理回顾1.2 延迟产生的关键环节二、实时监控与诊断方案

SQLyog中DELIMITER执行存储过程时出现前置缩进问题的解决方法

《SQLyog中DELIMITER执行存储过程时出现前置缩进问题的解决方法》在SQLyog中执行存储过程时出现的前置缩进问题,实际上反映了SQLyog对SQL语句解析的一个特殊行为,本文给大家介绍了详... 目录问题根源正确写法示例永久解决方案为什么命令行不受影响?最佳实践建议问题根源SQLyog的语句分

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

Redis 热 key 和大 key 问题小结

《Redis热key和大key问题小结》:本文主要介绍Redis热key和大key问题小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、什么是 Redis 热 key?热 key(Hot Key)定义: 热 key 常见表现:热 key 的风险:二、

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制