如何使用 TensorFlow 构建机器学习模型
ztj100 2025-06-13 18:12 5 浏览 0 评论
在这篇文章中,我将逐步讲解如何使用 TensorFlow 创建一个简单的机器学习模型。
TensorFlow 是一个由谷歌开发的库,并在 2015 年开源,它能使构建和训练机器学习模型变得简单。
我们接下来要建立的模型将能够自动将公里转换为英里,在本例中,我们将创建一个能够学习如何进行这种转换的模型。我们将向这个模型提供一个CSV文件作为输入,其中有 29 组已经执行过的公里和英里之间的转换,基于这些数据,我们的模型将学会自动进行这种转换。
我们将使用有监督学习算法,因为我们知道数据的输入和输出结果。并使用 Python 作为编程语言。Python 提供了一系列与机器学习相关的方便的库和工具。本例中所有的步骤都是使用Google Colab执行的。Google Colab 允许我们在浏览器上零配置地编写和执行 Python 代码。
导入必需的库
我们首先导入在我们的例子中将要使用到的库。
import tensorflow as tf
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
复制代码
- 我们将导入 TensorFlow 来创建我们的机器学习模型。
- 我们还将导入 Pandas 库来读取包含有公里和英里转换数据的 CSV 文件。
- 最后,我们将导入 Seaborn 和 Matlotlib 库绘制不同的结果。
加载样例数据
我们将含有逗号分隔的值的文件(Kilometres-miles.csv)读取到我们的数据帧中。这个文件包含一系列公里和英里值的转换。我们将使用这些数据帧来训练我们的模型。你可以在这个链接下载这个文件。
要从 Google Colab 读取文件,你可以使用不同的方法。在本例中,我直接将 CSV 文件上传到我的 Google Colab 上的 sample_data 文件夹中,但你可以从一个 URL 中读取文件(比如,从 GitHub)。
上传到 Google Colab 的问题是,数据会在运行时重启时丢失。
数据帧是二维的大小可变的并且各种各样的表格数据。
df = pd.read_csv('/content/sample_data/Kilometres-miles.csv')
df.info
复制代码
示例数据信息
绘制数据帧
我们将“searborn”库的“scatterplot”导入并命名为“sns”,然后使用这个库来绘制上述图形。它显示了 X(公里)和 Y(英里)对应关系的图形化表示。
print("Painting the correlations")
#Once we load seaborn into the session, everytime a matplotlib plot is executed, seaborn's default customizations are added
sns.scatterplot(df['Kilometres'], df['Miles'])
plt.show()
复制代码
公里和英里的相关性
我们定义数据帧的输入和输出来训练模型:
X(公里)是输入,Y(英里)是输出。
print("Define input(X) and output(Y) variables")
X_train=df['Kilometres']
y_train=df['Miles']
复制代码
输入和输出变量
创建神经网络
现在,让我们使用“keras.Sequential”方法来创建一个神经网络,其中依次添加“layers”。每一个层(layer)都具有逐步提取输入数据以获得所需输出的功能。Keras 是一个用 Python 写的库,我们创建神经网络并使用不同的机器学习框架,例如 TensorFlow。
接下来,我们将使用“add”方法向模型添加一个层。
print("Creating the model")
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(units=1,input_shape=[1]))
复制代码
创建神经网络
编译模型
在训练我们的模型之前,我们将在编译步骤中添加一些额外设置。
我们将设置一个优化器和损失函数,它们会测量我们的模型的准确性。Adam 优化是一种基于第一次和第二次矩的自适应预算的随机梯度下降算法。
为此,我们将使用基于平均方差的损失函数,它测量了我们预测的平均方差。
我们的模型的目标是最小化这个函数。
print("Compiling the model")
model.compile(optimizer=tf.keras.optimizers.Adam(1), loss='mean_squared_error')
复制代码
编译模型
训练模型
我们将使用“拟合(fit)”方法来训练我们的模型。首先,我们传入独立变量或输入变量(X-Kilometers)和目标变量(Y-Miles)。
另一方面,我们预测 epoch 的数值。在本例中,epoch 值是 250。一个 epoch 就是遍历一遍所提供的完整的 X 和 Y 数据。
- 如果 epoch 的数值越小,误差就会越大;反过来,epoch 的数值越大,则误差就会越小。
- 如果 epoch 的数值越大,算法的执行速度就会越慢。
print ("Training the model")
epochs_hist = model.fit(X_train, y_train, epochs = 250)
复制代码
训练模型的控制台
评估模型
现在,我们评估创建的模型,在该模型中,我们可以观察到损失(Training_loss)随着执行的遍历次数(epoch)的增多而减少,如果训练集数据有意义并且是一个足够大的组,这是合乎逻辑的。
print("Evaluating the model")
print(epochs_hist.history.keys())
#graph
plt.plot(epochs_hist.history['loss'])
plt.title('Evolution of the error associated with the model')
plt.xlabel('Epoch')
plt.ylabel('Training Loss')
plt.legend('Training Loss')
plt.show()
复制代码
从图中我们可以看出,用 250 次训练模型并没有多大帮助,在第 50 次遍历后,误差并没有减少。因此,训练该算法的最佳遍历数大约是 50。
进行预测
现在我们已经训练了我们的模型,我们可以使用它来进行预测。
在本例中,我们将 100 赋值给模型的输入变量,然后模型会返回预测的英里数:
kilometers = 100
predictedMiles = model.predict([kilometers])
print("The conversion from Kilometres to Miles is as follows: " + str(predictedMiles))
复制代码
从公里到英里的换算为 62.133785.
检查结果
milesByFormula = kilometers * 0.6214
print("The conversion from kilometers to miles using the mathematical formula is as follows:" + str(milesByFormula))
diference = milesByFormula - predictedMiles
print("Prediction error:" + str(diference))
复制代码
使用公式从公里到英里的换算值为:62.13999999999999。预测误差为 0.00621414
总结
通过本例,我们了解了如何使用 TensorFlow 库来创建一个模型,这个模型已经学会自动将公里数转换为英里数,并且误差很小。
TensorFlow 用于执行此过程的数学非常简单。基本上,本例使用线性回归来创建模型,因为输入变量(公里数)和输出变量(英里数)是线性相关的。在机器学习中,过程中最耗时的部分通常是准备数据。
随着时间的推移,我们收获了一些经验,这些经验可以帮助我们选择最适合的算法及其设置,但一般来说,这是一项分析测试并改进的任务。
作者介绍
Kesk -*- ,软件工程师,软件爱好者,科幻作家。
原文链接
Build Your First Machine Learning Model With TensorFlow
相关推荐
- 13个python常用库,提高你的开发能力
-
Python拥有大量封装好的功能模块和工具库,这些库广泛应用于数据分析、机器学习、Web开发、自动化等多个领域。库在Python的作用非常重要,利用库不仅能简化复杂的任务还能极大减少开发的时间。下面介...
- TensorFlow中logits的含义解析(tensorflow2 lstm)
-
技术背景在机器学习尤其是深度学习领域,...
- Python TensorFlow机器学习模型构建指南
-
以下是一篇关于使用Python和TensorFlow构建机器学习模型的详细指南,结合代码示例和关键概念解释:探索TensorFlow:构建强大的机器学习模型TensorFlow是由Goo...
- TensorFlow和Pytorch中的音频增强
-
对于图像相关的任务,对图像进行旋转、模糊或调整大小是常见的数据增强的方法。因为图像的自身属性与其他数据类型数据增强相比,图像的数据增强是非常直观的,我们只需要查看图像就可以看到特定图像是如何转换的,...
- 使用TensorFlow进行深度学习模型训练
-
深度学习是一种机器学习的子领域,它通过模拟人脑神经网络的结构和运作方式,从而实现在大规模数据上进行复杂任务的训练和预测。TensorFlow是由Google开发的一款开源的深度学习框架,它为我们...
- Keras各种Callbacks介绍(keras中backend常用)
-
1前言在tensorflow.keras中,callbacks能在fit、...
- 实例解析神经网络的工作原理(神经网络具体实例)
-
来源:算法进阶...
- 在浏览器中进行深度学习:TensorFlow.js (五)构建一个神经网络
-
这一次我们终于可以开始真正的深度学习了,从一个神经网络开始。神经网络(NeuralNetwork)是深度学习的基础,基本概念包括:神经元,层,反向传播等等。如果细讲我估计没有五到十篇文章那是讲不完的...
- TensorFlow和Keras入门必读教程(tensorflow_core.keras)
-
导读:本文对TensorFlow的框架和基本示例进行简要介绍。作者:本杰明·普朗什(BenjaminPlanche)艾略特·安德烈斯(EliotAndres)来源:华章科技01TensorFlo...
- Transformer系列:残差连接原理详细解析和代码论证
-
关键词:...
- 详解SoftMax多分类器(多分类svm代码)
-
常见的逻辑回归、SVM等常用于解决二分类问题,对于多个选项的分类问题,比如识别手写数字,它就需要10个分类,同样也可以用逻辑回归或SVM(只是需要多个二分类来组成多分类)。对于多分类的实现,我们还可以...
- 如何使用 TensorFlow 构建机器学习模型
-
在这篇文章中,我将逐步讲解如何使用TensorFlow创建一个简单的机器学习模型。TensorFlow是一个由谷歌开发的库,并在2015年开源,它能使构建和训练机器学习模型变得简单。...
- 芋道 ruoyi-vue-pro 踩的那些坑—前端编译打包问题
-
1、芋道ruoyi-vue-pro前端没有README.md,是可以理解,毕竟他们是以文档来创收的。但是对于非专业的前端人员非常的不友好。坑是一个接一个,很崩溃。我看项目有有个yarn.lock,...
- Nginx部署Vue项目以及解决刷新页面404
-
在部署vue、react的前端项目时,经常会出现404的问题,一般是文件不是真正的存在,所以Nginx报404的错误一、打包项目1.在项目中的package.json上右键,点击Shownpm...
- vue3管理后台,打包方便体积小,访问速度快,代码规整可读性强
-
项目介绍增强型vue3管理后台,打包方便体积小,访问速度快,代码规整可读性强。项目特点首页...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 13个python常用库,提高你的开发能力
- TensorFlow中logits的含义解析(tensorflow2 lstm)
- Python TensorFlow机器学习模型构建指南
- TensorFlow和Pytorch中的音频增强
- 使用TensorFlow进行深度学习模型训练
- Keras各种Callbacks介绍(keras中backend常用)
- 实例解析神经网络的工作原理(神经网络具体实例)
- 在浏览器中进行深度学习:TensorFlow.js (五)构建一个神经网络
- TensorFlow和Keras入门必读教程(tensorflow_core.keras)
- Transformer系列:残差连接原理详细解析和代码论证
- 标签列表
-
- idea eval reset (50)
- vue dispatch (70)
- update canceled (42)
- order by asc (53)
- spring gateway (67)
- 简单代码编程 贪吃蛇 (40)
- transforms.resize (33)
- redisson trylock (35)
- 卸载node (35)
- np.reshape (33)
- torch.arange (34)
- npm 源 (35)
- vue3 deep (35)
- win10 ssh (35)
- vue foreach (34)
- idea设置编码为utf8 (35)
- vue 数组添加元素 (34)
- std find (34)
- tablefield注解用途 (35)
- python str转json (34)
- java websocket客户端 (34)
- tensor.view (34)
- java jackson (34)
- vmware17pro最新密钥 (34)
- mysql单表最大数据量 (35)