(案例):我们将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. 手指贴个“创可贴”,你睡觉都能发电
  2. @Async的异步任务多起来了,如何配置多个线程池来隔离任务?
  3. 在window 2008 server r2 64位 IIS上配置 apache tomcat 8.0
  4. C++虚函数实现多态的机制
  5. 新闻文本内容知识图谱表示项目
  6. feign直接走熔断_SpringCloud微服务面试必问:Hystrix 服务降级、熔断
  7. rabbitmq安装centos7
  8. 什么是https,和ssl什么关系,为什么用https
  9. M1: 复制带随机指针的链表
  10. C. Memory and De-Evolution 逆向思维
  11. Net设计模式实例系列文章总结
  12. java框架难吗_java框架难学吗?怎样才能学好java框架?
  13. vue集成wangeditor3.0版本 解决光标乱跳等问题
  14. 环签名原理与隐私保护
  15. 编程求E1+E2+…+E100的值​
  16. 软件测试职位概要,系统测试工程师职位描述
  17. android 模拟器 itools,iTools安卓模拟器常见问题及解决方法
  18. 罗杨美慧 20190912-1 每周例行报告
  19. error:jump to case label [-fpermissive]
  20. htons(), htonl(), ntohs(), ntohl()

热门文章

  1. android opengl ppt,Opengl example.ppt
  2. Rabbitmq- 消费者ack机制与发布者消息确认
  3. Android 客户端Socket 与 Java服务端ServerSocket
  4. CISCO-路由器交换机密码恢复
  5. 基于wifi无线PLC远程控制实现io开关量信号远程采集传输技术
  6. 关于vs2019安全函数localtime_s()的用法
  7. 中设智控牵手欧派,助力欧派提升设备管理水平
  8. 梦幻西游手游300级装备、30级宝石、抽奖后台、坐骑版本搭建技术讲解
  9. js实现刷新当前页面
  10. ADB有线连接车机连不上的解决方案2