惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
MongoDB | Blog
MongoDB | Blog
D
Docker
Martin Fowler
Martin Fowler
人人都是产品经理
人人都是产品经理
GbyAI
GbyAI
Jina AI
Jina AI
酷 壳 – CoolShell
酷 壳 – CoolShell
M
MIT News - Artificial intelligence
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
B
Blog RSS Feed
云风的 BLOG
云风的 BLOG
Blog — PlanetScale
Blog — PlanetScale
Vercel News
Vercel News
The Cloudflare Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
I
InfoQ
U
Unit 42

Dr34m's Blog

I Expect You To Die(我希望你死) 1,2,3 完整中文攻略 Linux换国内源 && docker安装 && 换加速镜像 Vue3 + Element-Plus 极简速查 随笔 pyinstaller打包的程序执行报错Failed to extract xxxx decompression resulted in return code -1 taoSync排除项简易教程 apscheduler的cron配置项 如何在绿联NAS中使用TaoSync同步我的文件到各个网盘 GB28181抓包记录 JS计算字节大小,把字节转换为KB/MB/GB/TB等 在Python中使用onvif管理摄像头,包括设备发现,获取RTSP地址,获取设备信息,截图,云台控制与缩放,设置时间 编写bat脚本实现对vue项目构建并压缩 内网穿透工具frp快速使用 CentOS 7.9 安装基础开发环境jdk redis nacos nginx mysql Pyinstaller 逆向 VUE实现复制与粘贴_获取剪切板内容 Electron + xterm.js + node-pty + vue 实现本地终端 child_process exec 中文乱码 Windows&Linux 解决方法 yum 更新 gcc CentOS安装并使用conda 将fluid主题博客的静态资源由第三方改为本地存储 一个上手即用的通用公众号/小程序/h5/app框架 python批量转化doc到docx SpringBoot单元测试注入空指针 随笔 python归一化数据 windows下python安装sasl遇到的问题及解决 将对象List中的某个字段放到新的List中[转载] Python http.server 本地服务支持跨域 TensorFlow入门
TensorFlow 预测出现NaN的一种可能以及解决方法
Dr3@m · 2022-04-21 · via Dr34m's Blog

现象

  • 使用TensorFlow进行训练(model.fit)时,一切正常,并且对测试数据集的预测结果(model.evaluate)也表现正常,这时候保存模型
  • 对训练集中单独一条数据,或者少量数据进行预测,预测结果出现NaN
  • 如果对稍大量数据预测,则能正常出结果,但预测结果准确度低于预期
  • 如果对大量数据预测,则结果准确度符合预期

原因

经过分析,是由于训练和预测使用的归一化方法中使用的变量不一致导致的,训练和预测都是用下边的归一化方法

1
2
3
4
train_stats = train_dataset.describe().transpose()
train_stats_final = train_stats[['mean', 'std']]
def norm(x):
return (x - train_stats_final['mean']) / train_stats_final['std']

但由于训练和预测的数据不一样,导致其meanstd值不同,尤其预测用数据量较少时,其值差别巨大,导致训练的模型不适用于预测时归一化出来的数据,最终预测结果出现NaN

解决方法

在训练保存模型时,同时对训练数据的meanstd值保存,在预测时使用

1.保存

1
2
3
train_stats = train_dataset.describe().transpose()
train_stats_final = train_stats[['mean', 'std']]
train_stats_final.to_csv('xxx.csv')

2.使用

1
train_stats_final = pd.read_csv("xxx.csv", index_col=0)