(案例):我们将14组国内男子跳高运动员各项素质指标作为输入,即(30m行进跑,立定三级跳远,助跑摸高,助跑4-6步跳高,负重深蹲杠铃,杠铃半蹲系数,100m,抓举),将对应的跳高成绩作为输出,通过对14位选手的数据训练建立模型,预测第15位选手的跳高成绩。
待预测样本a=[[3.0,9.3,3.3,2.05,100,2.8,11.2,50]]
import tensorflow as tf
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler

构造数据:14个样本,8个特征1个标签
x=[[3.2,3.2,3,3.2,3.2,3.4,3.2,3,3.2,3.2,3.2,3.9,3.1,3.2],
[9.6,10.3,9,10.3,10.1,10,9.6,9,9.6,9.2,9.5,9,9.5,9.7],
[3.45,3.75,3.5,3.65,3.5,3.4,3.55,3.5,3.55,3.5,3.4,3.1,3.6,3.45],
[2.15,2.2,2.2,2.2,2,2.15,2.14,2.1,2.1,2.1,2.15,2,2.1,2.15],
[140,120,140,150,80,130,130,100,130,140,115,80,90,130],
[2.8,3.4,3.5,2.8,1.5,3.2,3.5,1.8,3.5,2.5,2.8,2.2,2.7,4.6],
[11,10.9,11.4,10.8,11.3,11.5,11.8,11.3,11.8,11,11.9,13,11.1,10.85],
[50,70,50,80,50,60,65,40,65,50,50,50,70,70]]
y=[[2.24],[2.33],[2.24],[2.32],[2.2],[2.27],[2.2],[2.26],[2.2],[2.24],[2.24],[2.2],
[2.2],[2.35]]

获取数据集
x_t=np.array(x,dtype=‘float32’).T #[148]
y_true=np.array(y,dtype=‘float32’) #[14
1]

将特征数据最值归一,范围在(0,1)之间
mm=MinMaxScaler() #实例化
std=mm.fit(x_t) #训练模型
x_true=std.transform(x_t) #转化
print(x_true)
print(y_true)

通过占位符,预定义输入X,输出Y
即输入层8*1个神经元,输出层1个神经元

X=tf.placeholder(tf.float32,[None,8])
Y=tf.placeholder(tf.float32,[None,1])

随机数列生成,创建隐含层的神经网络,隐含层4个神经元
truncated_normal:选取位于正态分布方差在0.1附近的随机数据

w1=tf.Variable(tf.truncated_normal([8,4],stddev=0.1))
b1=tf.Variable(tf.zeros([4]))

w2=tf.Variable(tf.zeros([4,1]))
b2=tf.Variable(tf.zeros([1]))
relu,为激活函数,增加非线性关系,隐藏层和输出层的计算
L1=tf.nn.relu(tf.matmul(X,w1)+b1)
y_pre=tf.matmul(L1,w2)+b2

计算损失函数:均方误差
loss=tf.reduce_mean(tf.cast(tf.square(Y-y_pre),tf.float32))

梯度下降优化损失函数,学习率过大容易导致权重非常大,会出现nan值
train_op=tf.train.GradientDescentOptimizer(0.01).minimize(loss)

初始化变量
init_op=tf.global_variables_initializer()

创建一个saver,用来保存训练模型
saver=tf.train.Saver()

开启回话
with tf.Session() as sess:
sess.run(init_op)
训练模型15次
for i in range(1,300): #控制训练批次
for j in range (len(y_true)):#控制每批次训练的样本数
sess.run(train_op,feed_dict={X:[x_true[j,:]],Y:[y_true[j,:]]})#[[]]是为了匹配占位的类型
输出每次训练的损失
print(‘第%s批次第%s个样本训练的损失为:%s,真实值为:%s,预测值为:%s’% (i,j+1,
sess.run(loss, feed_dict={X:[x_true[j,:]],Y:[y_true[j,:]]}),
y_true[j,:],
sess.run(y_pre,feed_dict={X:[x_true[j,:]],Y:[y_true[j,:]]})))

保存模型:需要在会话里完成(注意缩进代码)
saver.save(sess,’./BP_demo/BP_model’)
加载模型,预测15号选手的跳高成绩
saver.restore(sess,’./BP_demo/BP_model’)
样本原始数据
a = [[3.0,9.3,3.3,2.05,100,2.8,11.2,50]]
获取测试样本
x_test=np.array(a,dtype=‘float32’)
将数据最值归一
x_test=std.transform(x_test)
print(‘15号选手的跳高成绩预测值为:’, sess.run(y_pre,feed_dict={X:x_test})

结果:

第299批次第11个样本训练的损失为:0.00016767633,真实值为:[2.24],预测值为:[[2.227051]]
第299批次第12个样本训练的损失为:1.5376372e-06,真实值为:[2.2],预测值为:[[2.19876]]
第299批次第13个样本训练的损失为:0.00062711653,真实值为:[2.2],预测值为:[[2.2250423]]
第299批次第14个样本训练的损失为:0.008744326,真实值为:[2.35],预测值为:[[2.2564888]]
15号选手的跳高成绩预测值为: [[2.1450984]]

问题:
只是简单实现数据预测,误差还是较大,有更好的优化方法,欢迎大家一起来分享哦!

基于Tensorflow框架的BP神经网络回归小案例--预测跳高相关推荐

  1. 基于Tensorflow框架的BP神经网络分类小案例--蚊子分类

    (案例):利用bp神经网络预测蚊子种类,第三列目标值为0.9的属于不咬人的A类,目标值为0.1的属于咬人的B类,特征集第一列是翼长,第二列是触角长 如下有20个样本数据: data=[[1.78,1. ...

  2. 【Matlab】基于多层前馈网络BP神经网络实现多分类预测(Excel可直接替换数据)

    [Matlab]基于多层前馈网络BP神经网络实现多分类预测(Excel可直接替换数据) 1.算法简介 1.1 算法原理 1.2 算法流程 2.测试数据集 3.替换数据 4.混淆矩阵 5.对比结果 6. ...

  3. 基于PaddlePaddle框架的BP神经网络的鲍鱼年龄的预测

    # 经典的线性回归模型主要用来预测一些存在着线性关系的数据集.回归模型可以理解为:存在一个点集,用一条曲线去拟合它分布的过程.如果拟合曲线是一条直线,则称为线性回归.如果是一条二次曲线,则被称为二次回 ...

  4. 【BP预测】基于和声搜索算法优化BP神经网络实现风速数据预测附matlab代码

    ​✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  5. 基于遗传算法改进的BP神经网络电网负荷预测,GA-BP神经网络电网负荷预测,1000案例之14

    摘要 节能减排,降低谈排放,降低电网传输的损耗 电力负荷预测是以电力负荷为对象进行的一系列预测工作.从预测对象来看,电力负荷预测包括对未来电力需求量(功率)的预测和对未来用电量(能量)的预测以及对负荷 ...

  6. 【BP预测】基于布谷鸟算法优化BP神经网络数据回归预测含Matlab源码

    1 简介 锂电池健康状态(SOH)的预测是电动汽车锂电池管理系统的最重要的关键技术之一;传统的误差逆向传播(BP)神经网络容易使权值和阈值陷入局部最优,从而导致预测结果不精确;结合布谷鸟搜索算法(CS ...

  7. CV之CNN:基于tensorflow框架采用CNN(改进的AlexNet,训练/评估/推理)卷积神经网络算法实现猫狗图像分类识别

    CV之CNN:基于tensorflow框架采用CNN(改进的AlexNet,训练/评估/推理)卷积神经网络算法实现猫狗图像分类识别 目录 基于tensorflow框架采用CNN(改进的AlexNet, ...

  8. DL之DNN:基于Tensorflow框架对神经网络算法进行参数初始化的常用九大函数及其使用案例

    DL之DNN:基于Tensorflow框架对神经网络算法进行参数初始化的常用九大函数及其使用案例 目录 基于Tensorflow框架对神经网络算法进行初始化的常用函数及其使用案例 1.初始化的常用函数

  9. CV之IC之AlexNet:基于tensorflow框架采用CNN卷积神经网络算法(改进的AlexNet,训练/评估/推理)实现猫狗分类识别案例应用

    CV之IC之AlexNet:基于tensorflow框架采用CNN卷积神经网络算法(改进的AlexNet,训练/评估/推理)实现猫狗分类识别案例应用 目录 基于tensorflow框架采用CNN(改进 ...

最新文章

  1. Windows文件系统过滤驱动开发教程(0,1,2)
  2. JavaScript DOM 9 - 元素的尺寸与位置
  3. 为什么c程序里一定要写main函数
  4. Jmeter之配置元件操作
  5. 如何学习Java? 在学习Java的过程中需要掌握哪些技能?
  6. vue路由切换时内容组件的滚动条回到顶部
  7. 使软件可二次开发_基于C++的?UG二次开发
  8. Python MySqlDB 增删改数据库(转载)
  9. win10环境下mysql8安装后Can‘‘t connect to MySQL server on localhost (10061)解决方法
  10. 不可能解开的谜题 (程序员修炼之道,评注者序)
  11. STM32开发环境配置
  12. CorelDRAW暗角效果怎么做?
  13. 第十一周项目一 类的继承填空
  14. 开发人员常说的CLI是什么
  15. AntV G6 自定义节点图形
  16. OSChina 周五乱弹 —— 那地图上的点到底去哪儿
  17. 我的世界电脑服务器无法显示皮肤,我的世界电脑版网易服务器怎么用皮肤 | 手游网游页游攻略大全...
  18. linux系统快照和克隆
  19. 手机模拟器之争:Genimotion在左,海马玩在右
  20. 这是不是你在找的【电销帮手】——人机耦合佳信静默机器人

热门文章

  1. 图像变形算法:实现Photoshop液化工具箱中向前变形工具
  2. CSS3实现倒影效果
  3. 第13期微生物组-宏基因组分析(线上/线下同时开课,2021.11)
  4. SkyWalking服务应用
  5. TFmini Plus 开关量输出说明
  6. 服! 买不起2.6亿一只的加密猫, 他用10分钟生了一窝!
  7. 深剖C++内联函数和引用机制
  8. 计算机科学区别于数学和物理学,新编大学计算机基础
  9. 2022北京养老展(中国国际老年产业博览会)
  10. 不连接显示器或者HDMI欺骗器来 使用Moonlight串流游戏