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

这是一个完整的神经网络实现,用于将摄氏度转换为华氏度。下面,我会逐步描述各个步骤,并提供完整代码。

1. 数据准备与预处理

在这部分,我们准备了摄氏度(features)与对应的华氏度(labels)数据。这些数据将作为输入和输出提供给神经网络。我们还需要将输入数据的形状调整为二维数组 (N, 1),因为 TensorFlow 要求输入数据的形状为二维。

这些数据表示摄氏度到华氏度的转换公式:华氏度 = 摄氏度 × 9/5 + 32

复制代码
features = np.array([-50, -40, -10, 0, 8, 22, 35, 45, 55, 65, 75, 95], dtype=float)
labels = 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)

2. 构建模型

我们使用 tf.keras.Sequential 创建一个简单的神经网络模型。该模型包含一个层,即 Dense 层,它表示一个全连接层。这个层的输入是一个数值(摄氏度),输出一个数值(华氏度)。

复制代码
layer = tf.keras.layers.Dense(units=1, input_shape=[1])
model = tf.keras.Sequential([layer])

3. 编译模型

在编译模型时,我们指定优化器为 Adam,并设置学习率为 0.1。损失函数使用 mean_squared_error,因为我们是进行回归任务。

复制代码
model.compile(optimizer=tf.keras.optimizers.Adam(0.1), loss='mean_squared_error')

4. 训练模型

我们使用 fit() 方法进行训练。设定了 epochs=1000,即训练模型 1000 次。

复制代码
history = model.fit(features, labels, epochs=1000, verbose=1)

5. 评估模型

训练完成后,我们可以用 model.predict() 方法来做预测。输入一个摄氏度(例如 38.1°C),模型会输出预测的华氏度。

复制代码
print(model.predict(np.array([[38.1]])))  # 例如:预测38.1°C对应的华氏度

6. 模型应用与预测

我们通过调用 model.predict(np.array([[38.1]])) 来预测给定输入摄氏度对应的华氏度。

复制代码
prediction = model.predict(np.array([[10]]))
print(f"10°C 对应的华氏度是: {prediction[0][0]}")

7. 保存与加载模型

可以使用 model.save('model.h5') 来保存模型,使用 tf.keras.models.load_model('model.h5') 来加载保存的模型。

复制代码
model.save('temperature_model.h5')  # 保存模型
# 加载模型
loaded_model = tf.keras.models.load_model('temperature_model.h5')

8. 可视化损失变化

训练过程中,损失会随着训练轮数的增加而变化。我们通过 history.history['loss'] 获取训练过程中的损失变化,并用 matplotlib 可视化出来。

复制代码
plt.plot(history.history['loss'])
plt.title("Training Loss")
plt.xlabel("Epochs")
plt.ylabel("Loss")
plt.show()

9. 完整代码

复制代码
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt

# 1. 数据准备与预处理
# 温度数据:摄氏度到华氏度的转换
features = np.array([-50, -40, -10, 0, 8, 22, 35, 45, 55, 65, 75, 95], dtype=float)
labels = 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)

# 调整输入数据形状为二维数组 (N, 1)
features = features.reshape(-1, 1)

# 2. 构建模型
layer = tf.keras.layers.Dense(units=1, input_shape=[1])  # 输入一个值,输出一个值
model = tf.keras.Sequential([layer])

# 3. 编译模型
model.compile(optimizer=tf.keras.optimizers.Adam(0.1), loss='mean_squared_error')

# 4. 训练模型
history = model.fit(features, labels, epochs=1000, verbose=1)

# 5. 评估模型
# 预测新数据
print(model.predict(np.array([[38.1]])))  # 例如:预测38.1°C对应的华氏度
print(layer.get_weights())  # 查看训练后的模型权重

# 6. 模型应用与预测
# 例如:用模型预测其他摄氏度的华氏度值
# prediction = model.predict(np.array([[10]]))
# print(f"10°C 对应的华氏度是: {prediction[0][0]}")

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

# 8. 可视化损失变化
plt.plot(history.history['loss'])
plt.title("Training Loss")
plt.xlabel("Epochs")
plt.ylabel("Loss")
plt.show()

10. 总结

  1. 准备数据:摄氏度和对应的华氏度数据。
  2. 构建模型:使用 Keras 创建简单的神经网络模型。
  3. 编译模型:选择优化器、损失函数并设置学习率。
  4. 训练模型:用数据训练模型,让模型学习摄氏度到华氏度的关系。
  5. 评估与预测:用训练好的模型预测新的摄氏度对应的华氏度。
  6. 保存和加载模型:保存训练好的模型以便以后使用。
  7. 可视化损失变化:观察训练过程中的损失值,帮助评估模型效果。

每个步骤都有其目的和作用,希望通过这个逐步讲解,能帮助你更清楚地理解如何用神经网络进行温度转换任务!

11. 视频链接

https://v.douyin.com/ifnXmRHG/ 复制此链接,打开Dou音搜索,直接观看视频!

相关推荐
雪隐3 分钟前
AI股票小助手01-量化交易基础概念
人工智能·后端·python
GISer_Jing6 分钟前
Claude Code多Agent架构深度剖析
前端·人工智能·架构·自动化
小楼v6 分钟前
本周AI圈炸了(4.13 - 4.19):AI纳入教师资格考核、GPT-6来了、Claude反杀、机器人跑赢了人类
人工智能·gpt·ai·机器人·热点资讯·教资·opus 4.7
芝麻开门GEO8 分钟前
2026年Q2济南企业如何选择可靠的GEO服务商
大数据·人工智能·python
AI砖家8 分钟前
Claude Code 跳过确认完全指南:让 AI 自己完成开发任务
前端·人工智能·python·ai编程·代码规范
YJlio8 分钟前
CSDN AI数字营销实测体验:多平台账号一键分发到底好不好用?我做了一次完整实测
人工智能·windows·企业微信·火绒安全·系统备份·easyimagex
星河耀银海8 分钟前
AI算力需求:不同AI场景(图像、NLP)的算力要求
人工智能·自然语言处理
Dxy12393102169 分钟前
Python 操作 MySQL 事务:从入门到避坑
android·python·mysql
Lethehong11 分钟前
拒绝吃灰!手把手教你把“全能AI助理”无缝塞进微信/QQ,打造属于你的数字分身
人工智能·开源·蓝耘元生代·蓝耘maas·qwenpaw
Agent手记11 分钟前
医药代表拜访计划能否通过AI自动生成优化?2026Agent自动化实战解析
运维·人工智能·ai·自动化