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

相关文章

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

Pyserial设置缓冲区大小失败的问题解决

《Pyserial设置缓冲区大小失败的问题解决》本文主要介绍了Pyserial设置缓冲区大小失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录问题描述原因分析解决方案问题描述使用set_buffer_size()设置缓冲区大小后,buf

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

resultMap如何处理复杂映射问题

《resultMap如何处理复杂映射问题》:本文主要介绍resultMap如何处理复杂映射问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录resultMap复杂映射问题Ⅰ 多对一查询:学生——老师Ⅱ 一对多查询:老师——学生总结resultMap复杂映射问题

解决SpringBoot启动报错:Failed to load property source from location 'classpath:/application.yml'

《解决SpringBoot启动报错:Failedtoloadpropertysourcefromlocationclasspath:/application.yml问题》这篇文章主要介绍... 目录在启动SpringBoot项目时报如下错误原因可能是1.yml中语法错误2.yml文件格式是GBK总结在启动S

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

java实现延迟/超时/定时问题

《java实现延迟/超时/定时问题》:本文主要介绍java实现延迟/超时/定时问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java实现延迟/超时/定时java 每间隔5秒执行一次,一共执行5次然后结束scheduleAtFixedRate 和 schedu