当前位置: 首页 > news >正文

TensorFlow 示例摄氏度到华氏度的转换(一)

TensorFlow 实现神经网络模型来进行摄氏度到华氏度的转换,可以将其作为一个回归问题来处理。我们可以通过神经网络来拟合这个简单的转换公式。

1. 数据准备与预处理

2. 构建模型

3. 编译模型

4. 训练模型

5. 评估模型

6. 模型应用与预测

7. 保存与加载模型

8. 完整代码


1. 数据准备与预处理

你提供了摄氏度和华氏度的数据,并进行了标准化。标准化是为了使数据适应神经网络的训练,因为标准化可以加快训练过程并提高模型性能。

import numpy as np
import tensorflow as tf# 温度数据:摄氏度到华氏度的转换
celsius = np.array([-50,-40, -10, 0, 8, 22, 35, 45, 55, 65, 75, 95], dtype=float)
fahrenheit = np.array([-58.0,-40.0,14.0,32.0,46.4,71.6,95.0,113.0,131.0,149.0,167.0,203.0], dtype=float)# 数据标准化:计算均值和标准差
celsius_mean = np.mean(celsius)
celsius_std = np.std(celsius)fahrenheit_mean = np.mean(fahrenheit)
fahrenheit_std = np.std(fahrenheit)# 标准化输入和输出数据
celsius_normalized = (celsius - celsius_mean) / celsius_std
fahrenheit_normalized = (fahrenheit - fahrenheit_mean) / fahrenheit_std

2. 构建模型

在构建模型时,使用了一个简单的神经网络结构。神经网络包含了一个隐藏层和一个输出层。隐藏层使用了ReLU激活函数,输出层使用了线性激活函数,适合回归任务。

# 创建模型
model = tf.keras.Sequential([# 隐藏层,增加神经元数量,激活函数使用 ReLUtf.keras.layers.Dense(16, input_dim=1, activation='relu'),# 输出层,线性激活函数用于回归任务tf.keras.layers.Dense(1, activation='linear')
])

3. 编译模型

选择了Adam优化器,它在处理回归任务时表现较好,损失函数使用均方误差(MSE),这是回归问题中常用的损失函数。

# 编译模型,使用 Adam 优化器和均方误差损失函数
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001), loss='mean_squared_error')

4. 训练模型

模型通过 fit() 方法进行训练,设置训练轮数(epochs)为5000轮。根据数据的复杂性和模型的表现,增加训练轮数可以帮助模型更好地收敛。

# 训练模型,设置训练轮数(epochs)增加到5000
model.fit(celsius_normalized, fahrenheit_normalized, epochs=5000)

5. 评估模型

训练完成后,你可以对模型进行评估。这里使用了一个测试集(test_celsius),并通过预测得到标准化的结果,然后将其恢复为原始的华氏度值。

# 测试模型
test_celsius = np.array([0, 20, 100], dtype=float)
test_celsius_normalized = (test_celsius - celsius_mean) / celsius_std
predictions_normalized = model.predict(test_celsius_normalized)# 将预测结果从标准化值恢复到原始华氏度范围
predictions = predictions_normalized * fahrenheit_std + fahrenheit_mean

6. 模型应用与预测

最后,你可以输出预测的华氏度值。模型会对每个输入的摄氏度值返回预测的华氏度

# 输出预测结果
print("预测华氏度:")
for c, f in zip(test_celsius, predictions):print(f"{c} 摄氏度 => {f[0]} 华氏度")

7. 保存与加载模型

保存模型可以让你在之后加载并进行预测而不需要重新训练。在TensorFlow中,你可以使用 model.save() 来保存模型,使用 tf.keras.models.load_model() 来加载模型。

# 保存模型
model.save('temperature_conversion_model.h5')# 加载模型
loaded_model = tf.keras.models.load_model('temperature_conversion_model.h5')

8. 完整代码

最终的完整代码如下:

import numpy as np
import tensorflow as tf# 温度数据:摄氏度到华氏度的转换
celsius = np.array([-50,-40, -10, 0, 8, 22, 35, 45, 55, 65, 75, 95], dtype=float)
fahrenheit = np.array([-58.0,-40.0,14.0,32.0,46.4,71.6,95.0,113.0,131.0,149.0,167.0,203.0], dtype=float)# 数据标准化:计算均值和标准差
celsius_mean = np.mean(celsius)
celsius_std = np.std(celsius)fahrenheit_mean = np.mean(fahrenheit)
fahrenheit_std = np.std(fahrenheit)# 标准化输入和输出数据
celsius_normalized = (celsius - celsius_mean) / celsius_std
fahrenheit_normalized = (fahrenheit - fahrenheit_mean) / fahrenheit_std# 创建模型
model = tf.keras.Sequential([# 隐藏层,增加神经元数量,激活函数使用 ReLUtf.keras.layers.Dense(16, input_dim=1, activation='relu'),# 输出层,线性激活函数用于回归任务tf.keras.layers.Dense(1, activation='linear')
])# 编译模型,使用 Adam 优化器和均方误差损失函数
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001), loss='mean_squared_error')# 训练模型,设置训练轮数(epochs)增加到5000
model.fit(celsius_normalized, fahrenheit_normalized, epochs=5000)# 测试模型
test_celsius = np.array([0, 20, 100], dtype=float)
test_celsius_normalized = (test_celsius - celsius_mean) / celsius_std
predictions_normalized = model.predict(test_celsius_normalized)# 将预测结果从标准化值恢复到原始华氏度范围
predictions = predictions_normalized * fahrenheit_std + fahrenheit_mean# 输出预测结果
print("预测华氏度:")
for c, f in zip(test_celsius, predictions):print(f"{c} 摄氏度 => {f[0]} 华氏度")# 保存模型
model.save('temperature_conversion_model.h5')# 加载模型
loaded_model = tf.keras.models.load_model('temperature_conversion_model.h5')

相关文章:

TensorFlow 示例摄氏度到华氏度的转换(一)

TensorFlow 实现神经网络模型来进行摄氏度到华氏度的转换,可以将其作为一个回归问题来处理。我们可以通过神经网络来拟合这个简单的转换公式。 1. 数据准备与预处理 2. 构建模型 3. 编译模型 4. 训练模型 5. 评估模型 6. 模型应用与预测 7. 保存与加载模型 …...

7.DP算法

DP 在C中,动态规划(Dynamic Programming,DP)是一种通过将复杂问题分解为重叠子问题来高效求解的算法设计范式。以下是DP算法的核心要点和实现方法: 一、动态规划的核心思想 重叠子问题:问题可分解为多个重…...

Baklib构建高效协同的基于云的内容中台解决方案

内容概要 随着云计算技术的飞速发展,内容管理的方式也在不断演变。企业面临着如何在数字化转型过程中高效管理和协同处理内容的新挑战。为应对这些挑战,引入基于云的内容中台解决方案显得尤为重要。 Baklib作为创新型解决方案提供商,致力于…...

在C语言多线程环境中使用互斥量

如果有十个银行账号通过不同的十条线程同时向同一个账号转账时,如果没有很好的机制保证十个账号依次存入,那么这些转账可能出问题。我们可以通过互斥量来解决。 C标准库提供了这个互斥量,只需要引入threads.头文件。 互斥量就像是一把锁&am…...

项目练习:重写若依后端报错cannot be cast to com.xxx.model.LoginUser

文章目录 一、情景说明二、解决办法 一、情景说明 在重写若依后端服务的过程中 使用了Redis存放LoginUser对象数据 那么,有存就有取 在取值的时候,报错 二、解决办法 方法1、在TokenService中修改如下 getLoginUser 方法中:LoginUser u…...

代码随想录刷题笔记

数组 二分查找 ● 704.二分查找 tips:两种方法,左闭右开和左闭右闭,要注意区间不变性,在判断mid的值时要看mid当前是否使用过 ● 35.搜索插入位置 ● 34.在排序数组中查找元素的第一个和最后一个位置 tips:寻找左右边…...

AI智慧社区--人脸识别

前端 人脸的采集按钮&#xff1a; 首先对于选中未认证的居民记录&#xff0c;进行人脸采集 前端的按钮 <el-form-item><el-button v-has"sys:person:info" type"info" icon"el-icon-camera" :disabled"ids.length < 0" …...

对象的实例化、内存布局与访问定位

一、创建对象的方式 二、创建对象的步骤: 一、判断对象对应的类是否加载、链接、初始化: 虚拟机遇到一条new指令&#xff0c;首先去检查这个指令的参数能否在Metaspace的常量池中定位到一个类的符号引用&#xff0c;并且检查这个符号引用代表的类是否已经被加载、解析和初始化…...

React基础知识回顾详解

以下是React从前端面试基础到进阶的系统性学习内容&#xff0c;包含核心知识点和常见面试题解析&#xff1a; 一、React基础核心 JSX原理与本质 JSX编译过程&#xff08;Babel转换&#xff09;虚拟DOM工作原理面试题&#xff1a;React为何使用className而不是class&#xff1f;…...

开发第一个安卓页面

一&#xff1a;在java.com.example.myapplication下创建MainActivity的JAVA类 里面的代码要把xml的页面名字引入 二&#xff1a;如果没有这两个&#xff0c;可以手动创建layout文件夹和activity_main.xml activity_main.xml使用来做页面的。 三、找到这个文件 把你的JAVA类引入…...

物联网 STM32【源代码形式-ESP8266透传】连接OneNet IOT从云产品开发到底层MQTT实现,APP控制 【保姆级零基础搭建】

一、MQTT介绍 MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;是一种基于发布/订阅模式的轻量级通讯协议&#xff0c;构建于TCP/IP协议之上。它最初由IBM在1999年发布&#xff0c;主要用于在硬件性能受限和网络状况不佳的情…...

微服务-配置管理

配置管理 到目前为止我们已经解决了微服务相关的几个问题&#xff1a; 微服务远程调用微服务注册、发现微服务请求路由、负载均衡微服务登录用户信息传递 不过&#xff0c;现在依然还有几个问题需要解决&#xff1a; 网关路由在配置文件中写死了&#xff0c;如果变更必须重…...

基于SpringBoot的智慧康老疗养院管理系统的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

100.1 AI量化面试题:解释夏普比率(Sharpe Ratio)的计算方法及其在投资组合管理中的应用,并说明其局限性

目录 0. 承前1. 夏普比率的基本概念1.1 定义与计算方法1.2 实际计算示例 2. 在投资组合管理中的应用2.1 投资组合选择2.2 投资组合优化 3. 夏普比率的局限性3.1 统计假设的限制3.2 实践中的问题 4. 改进方案4.1 替代指标4.2 实践建议 5. 回答话术 0. 承前 如果想更加全面清晰地…...

LLMs之OpenAI o系列:OpenAI o3-mini的简介、安装和使用方法、案例应用之详细攻略

LLMs之OpenAI o系列&#xff1a;OpenAI o3-mini的简介、安装和使用方法、案例应用之详细攻略 目录 相关文章 LLMs之o3&#xff1a;《Deliberative Alignment: Reasoning Enables Safer Language Models》翻译与解读 LLMs之OpenAI o系列&#xff1a;OpenAI o3-mini的简介、安…...

深度解析:网站快速收录与网站安全性的关系

本文转自&#xff1a;百万收录网 原文链接&#xff1a;https://www.baiwanshoulu.com/58.html 网站快速收录与网站安全性之间存在着密切的关系。以下是对这一关系的深度解析&#xff1a; 一、网站安全性对收录的影响 搜索引擎惩罚&#xff1a; 如果一个网站存在安全隐患&am…...

【Rust自学】16.2. 使用消息传递来跨线程传递数据

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 16.2.1. 消息传递 有一种很流行而且能保证安全并发的技术&#xff08;或者叫机制&#xff09;叫做消息传递。在这种机制里&#xff0c;线…...

如何实现滑动网格的功能

文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了SliverList组件相关的内容&#xff0c;本章回中将介绍SliverGrid组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1 概念介绍 我们在本章回中介绍的SliverGrid组件是一种网格类组件&#xff0c;主要用来…...

使用C# 如何获取本机连接的WIFI名称[C# ---1]

前言 楼主最近在写一个WLAN上位机&#xff0c;遇到了使用C#查询SSID 的问题。CSDN上很多文章都比较老了&#xff0c;而且代码过于复杂。楼主自己想了一个使用CMD来获得SSID的方法 C#本身是没有获得WINDOWS网路信息的能力&#xff0c;必须要用系统API&#xff0c;WMI什么的&…...

【Docker】快速部署 Nacos 注册中心

【Docker】快速部署 Nacos 注册中心 引言 Nacos 注册中心是一个用于服务发现和配置管理的开源项目。提供了动态服务发现、服务健康检查、动态配置管理和服务管理等功能&#xff0c;帮助开发者更轻松地构建微服务架构。 仓库地址 https://github.com/alibaba/nacos 步骤 拉取…...

2025年11月一区SCI-壁虎优化算法Gekko Japonicus Algorithm-附Matlab免费代码

引言 近年来&#xff0c;在合理框架内求解优化问题的元启发式算法的发展引起了全球科学界的极大关注。本期介绍一种新的创新算法——壁虎优化算法Gekko Japonicus Algorithm&#xff0c;GJA。该算法的灵感主要来自于壁虎的捕食策略和生存行为。通过模拟壁虎的混合运动模式、定…...

Spring Boot 基础学习笔记

Spring Boot 基础学习笔记 一、Spring Boot 概述 1. 定义 Spring Boot 是 Pivotal 团队基于 Spring 框架开发的快速开发脚手架&#xff0c;核心宗旨是简化 Spring 应用的初始化搭建和开发流程&#xff0c;通过「约定优于配置」的思想&#xff0c;大幅减少 XML 配置和繁琐的依…...

Windows下PyTorch CPU版安装全攻略:从下载到验证(含conda常用命令)

Windows平台PyTorch CPU版高效安装指南&#xff1a;从零基础到环境验证 在深度学习领域&#xff0c;PyTorch已成为最受欢迎的框架之一。对于Windows用户而言&#xff0c;特别是刚接触机器学习的新手&#xff0c;正确安装PyTorch是迈入这一领域的第一步。本文将详细介绍如何在Wi…...

Java全栈工程师面试实录:从基础到实战的深度技术探讨

Java全栈工程师面试实录&#xff1a;从基础到实战的深度技术探讨 一、面试开场 面试官&#xff08;李工&#xff09;&#xff1a;你好&#xff0c;欢迎来到我们公司。我是李工&#xff0c;负责技术面试。今天我们会围绕你的技术栈进行一些深入交流。 应聘者&#xff08;张明&am…...

VISA 标准深度剖析:寄存器基控制规范与函数接口研究

VISA 标准深度剖析:寄存器基控制规范与函数接口研究 VISA(Virtual Instrument Software Architecture)是仪器控制领域的标准 API,它为不同总线(GPIB、USB、LAN、PXI 等)提供了统一的编程接口。本文将 VISA 函数按功能分为 8 大类,并逐一解析其作用、核心函数及使用场景…...

AutoGen Studio效果展示:看Qwen3-4B如何协作完成网页设计

AutoGen Studio效果展示&#xff1a;看Qwen3-4B如何协作完成网页设计 1. AutoGen Studio简介 AutoGen Studio是一个基于微软AutoGen框架开发的低代码界面工具&#xff0c;它让构建和组合AI代理变得简单直观。通过这个平台&#xff0c;你可以快速创建多个AI代理&#xff0c;为…...

AI辅助架构设计:让快马智能生成符合最佳实践的SpringBoot项目骨架

今天想和大家聊聊如何用AI工具快速搭建一个符合现代最佳实践的SpringBoot项目骨架。作为一个经常需要从零开始搭建项目的开发者&#xff0c;我发现传统的手动创建项目方式效率太低&#xff0c;而且容易遗漏一些关键配置。最近尝试了InsCode(快马)平台的AI辅助功能&#xff0c;发…...

mbed OS双极性步进电机驱动库设计与应用

1. 项目概述BipoarStepperMotor 是一个面向 ARM Cortex-M 系统、专为 mbed OS 平台设计的双极性步进电机驱动库。该库不依赖特定硬件抽象层&#xff08;HAL&#xff09;变体&#xff0c;而是基于 mbed OS 提供的标准 DigitalOut 和 PwmOut 接口构建&#xff0c;具备良好的跨平台…...

LeetCode 热题 100(每日两题)-Day2

坚持打卡第二天&#xff01;昨天的哈希表大显神威&#xff0c;今天我们将继续探索哈希集合的妙用&#xff0c;并引入数组操作中极其重要的技巧——双指针&#xff08;快慢指针&#xff09;。一、最长连续序列LeetCode 第 128 题&#xff0c;难度中等。这道题的难点在于题目强制…...

不止基础管理!国产 CRM 软件如何用数据分析赋能客户与销售工作

引言2026年国内企业数字化转型已进入深水区&#xff0c;CRM早已脱离了单纯的客户信息台账工具属性&#xff0c;数据分析能力成为衡量CRM产品价值的核心指标——从线索获客成本核算到跟单转化率优化&#xff0c;从客户复购价值挖掘到全链路风险管控&#xff0c;高质量的数据分析…...