搭建解决三好学生成绩问题的神经网络02---训练神经网络

2024-01-19 06:10

本文主要是介绍搭建解决三好学生成绩问题的神经网络02---训练神经网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:

       我们在https://blog.csdn.net/qq_39432161/article/details/100858574中介绍了三好学生成绩问题,搭建了初步的神经网络模型。但是没有进行循环训练神经网络模型,现在我们要对上一节中的神经网络模型进行训练。

训练神经网络模型步骤:

  1. 输入数据:x1,x2,x3即两个学生的德育、智育、体育各项的成绩
  2. 计算结果:神经网络根据输入的数据和当前的可变参数值计算出结果(y)
  3. 计算误差:将计算出来的结果y与我期待的结果(或者说标准答案(yTrain))进行比对,看看误差(loss)是多少。yTrain在三好学生问题中表示两个学生的各自总分。
  4. 调整神经网络的可变参数:根据误差的大小,使用反向传播算法,对神经网络中的可变参数进行调节(本问题中的w1,w2,w3)
  5. 再次训练:在调节可变参数后,重复上述步骤,直到误差低于我们理想水平。

                                    神经网络训练流程图

代码实现:

  1. 在上一个模型的基础上,我们添加了目标值yTrain = tf.placeholder(dtype=tf.float32)和训练误差loss = abs(y - yTrain)。
  2. 定义一个优化器变量optimizer。优化器:用来调整神经网络可变参数的对象,TensorFlow中有许多优化器,我们选用的是AlphaGo使用的优化器RMSPropOptimize。这个优化器是通过调用tf.train.RMSPropOptimizer()函数来实现,其中参数0.001是这个优化器的学习率(learn rate),学习率决定优化器每次调整参数的幅度大小。
  3. 定义完优化器,我们定义一个训练对象train(代表我们准备如何训练这个神经网络),我们把train对象定义为optimzer.minimize(loss),也就是说要求优化器按照把loss最小化(minimize)的原则来调整可变参数。
# Author:北京
# QQ:838262020
# time:2019/9/13
import tensorflow as tfx1 = tf.placeholder(dtype=tf.float32)
x2 = tf.placeholder(dtype=tf.float32)
x3 = tf.placeholder(dtype=tf.float32)# 添加一个目标值 
yTrain = 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 = x1 * w1
n2 = x2 * w2
n3 = x3 * w3y = n1 + n2 + n3# 训练值和目标值的绝对值差
loss = abs(y - yTrain)# 使用RMSPropOptimzer优化器 
optimzer = tf.train.RMSPropOptimizer(0.001)# 按照最小化的原则处理loss
train = optimzer.minimize(loss)sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)result1 = sess.run([train, x1, x2, x3, w1, w2, w3, y, yTrain, loss], feed_dict={x1: 90, x2: 80, x3: 85, yTrain: 85})
print(result1)
result2 = sess.run([train, x1, x2, x3, w1, w2, w3, y, yTrain, loss], feed_dict={x1: 98, x2: 95, x3: 87, yTrain: 96})
print(result2)

 运行结果:

[None, array(90.0, dtype=float32), array(80.0, dtype=float32), array(70.0, dtype=float32), 0.10316052, 0.10316006, 0.10315938, 24.0, array(85.0, dtype=float32), 61.0]
[None, array(98.0, dtype=float32), array(95.0, dtype=float32), array(87.0, dtype=float32), 0.10554425, 0.10563005, 0.1056722, 28.884804, array(96.0, dtype=float32), 67.115196]

 

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



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

相关文章

Linux虚拟机不显示IP地址的解决方法(亲测有效)

《Linux虚拟机不显示IP地址的解决方法(亲测有效)》本文主要介绍了通过VMware新装的Linux系统没有IP地址的解决方法,主要步骤包括:关闭虚拟机、打开VM虚拟网络编辑器、还原VMnet8或修... 目录前言步骤0.问题情况1.关闭虚拟机2.China编程打开VM虚拟网络编辑器3.1 方法一:点击还原VM

Flask解决指定端口无法生效问题

《Flask解决指定端口无法生效问题》文章讲述了在使用PyCharm开发Flask应用时,启动地址与手动指定的IP端口不一致的问题,通过修改PyCharm的运行配置,将Flask项目的运行模式从Fla... 目录android问题重现解决方案问题重现手动指定的IP端口是app.run(host='0.0.

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总

Seata之分布式事务问题及解决方案

《Seata之分布式事务问题及解决方案》:本文主要介绍Seata之分布式事务问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Seata–分布式事务解决方案简介同类产品对比环境搭建1.微服务2.SQL3.seata-server4.微服务配置事务模式1

mysql关联查询速度慢的问题及解决

《mysql关联查询速度慢的问题及解决》:本文主要介绍mysql关联查询速度慢的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql关联查询速度慢1. 记录原因1.1 在一次线上的服务中1.2 最终发现2. 解决方案3. 具体操作总结mysql

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod