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

【艾思科蓝】机器学习框架终极指南:PyTorch vs TensorFlow vs Keras vs Scikit-learn

第十届建筑、土木与水利工程国际学术会议(ICACHE 2024)_艾思科蓝_学术一站式服务平台 

 更多学术会议请看:学术会议-学术交流征稿-学术会议在线-艾思科蓝

目录

引言 

1. PyTorch

PyTorch的特点

PyTorch的用例

PyTorch的安装

PyTorch代码示例

2. TensorFlow

TensorFlow的特点

TensorFlow的用例

TensorFlow的安装

TensorFlow代码示例

3. Keras

Keras的特点

Keras的用例

Keras的安装

Keras代码示例

4. Scikit-learn

Scikit-learn的特点

Scikit-learn的用例

Scikit-learn的安装

Scikit-learn的代码示例 


引言 

近年来,机器学习技术取得了飞速的发展。它几乎影响了我们生活的方方面面,从社交媒体到自动驾驶汽车,不一而足。为了跟上这股潮流,Python社区开发了许多机器学习框架,使机器学习模型的开发、训练和部署变得更加容易。

在本文中,我们将介绍四个最受欢迎的机器学习框架:PyTorch、TensorFlow、Keras和Scikit-learn,并帮助你了解它们各自的特点,以便你能够根据自己的需求选择最合适的框架。

1. PyTorch

PyTorch是一个开源的机器学习库,适用于应用程序,如计算机视觉和自然语言处理。它是由Facebook人工智能研究院(FAIR)开发的,是一个基于Torch库的灵活框架。PyTorch提供了两个高级功能:强大的GPU加速和张量计算,具有动态计算图的功能。

PyTorch的特点
  • 动态计算图:PyTorch使用动态计算图,这意味着计算图是在运行时构建的。与静态计算图相比,这使得调试变得更加容易,因为你可以使用普通的Python调试工具(如pdb)进行调试。
  • 易于使用:PyTorch的API设计直观,易于学习和使用。它的设计哲学是尽可能接近Python编程风格。
  • 丰富的社区支持:PyTorch有一个庞大的社区,你可以找到大量的资源、教程和文档来帮助你入门。
  • 高效的GPU支持:PyTorch可以通过CUDA实现高效的GPU加速。
PyTorch的用例

PyTorch因其灵活性和动态计算图而非常适合研究和原型设计。由于其直观的API和丰富的功能,它也越来越多地被用于生产环境。

PyTorch的安装

你可以使用pip安装PyTorch:

pip install torch torchvision torchaudio

或者,你可以访问PyTorch的官方网站,根据你的需求(如CUDA版本和操作系统)获取安装命令。

PyTorch代码示例

下面是一个使用PyTorch构建和训练简单神经网络的示例:

import torch  
import torch.nn as nn  
import torch.optim as optim  # 定义神经网络模型  
class SimpleNN(nn.Module):  def __init__(self):  super(SimpleNN, self).__init__()  self.fc1 = nn.Linear(784, 256)  self.fc2 = nn.Linear(256, 128)  self.fc3 = nn.Linear(128, 10)  def forward(self, x):  x = torch.relu(self.fc1(x))  x = torch.relu(self.fc2(x))  x = self.fc3(x)  return x  # 初始化模型、损失函数和优化器  
model = SimpleNN()  
criterion = nn.CrossEntropyLoss()  
optimizer = optim.SGD(model.parameters(), lr=0.01)  # 准备数据(这里以随机数据为例)  
inputs = torch.randn(64, 784)  # 假设批量大小为64,输入特征数为784  
labels = torch.randint(0, 10, (64,))  # 假设有10个类别  # 前向传播  
outputs = model(inputs)  
loss = criterion(outputs, labels)  # 反向传播和优化  
optimizer.zero_grad()  
loss.backward()  
optimizer.step()  print(f'Loss: {loss.item()}')
2. TensorFlow

TensorFlow是由Google开发的开源机器学习库。它最初是为机器学习和深度神经网络的研究和生产而设计的,但随着时间的推移,它已经成为一个功能强大的框架,适用于各种机器学习任务,包括自然语言处理、计算机视觉和强化学习。TensorFlow使用静态计算图,这意味着计算图是在编译时构建的。

TensorFlow的特点
  • 静态计算图:与PyTorch的动态计算图不同,TensorFlow使用静态计算图。这使得TensorFlow在部署到生产环境时更加高效,但调试起来可能更具挑战性。
  • 分布式训练:TensorFlow非常适合分布式训练,因为它从一开始就被设计为可以在大规模分布式系统上运行。
  • 丰富的功能:TensorFlow提供了丰富的API和功能,包括TensorBoard(可视化工具)、TensorFlow Serving(模型服务)、TensorFlow Lite(移动和嵌入式设备上的机器学习)等。
  • 强大的社区支持:TensorFlow有一个庞大的社区和丰富的资源,包括教程、文档和示例代码。
TensorFlow的用例

TensorFlow因其强大的功能和分布式训练能力而非常适合大型机器学习项目和生产环境。

TensorFlow的安装

你可以使用pip安装TensorFlow:

pip install tensorflow

或者,你可以访问TensorFlow的官方网站,根据你的需求(如GPU支持和Python版本)获取安装命令。

TensorFlow代码示例

下面是一个使用TensorFlow构建和训练简单神经网络的示例:

import tensorflow as tf  
from tensorflow.keras.models import Sequential  
from tensorflow.keras.layers import Dense, Flatten  # 准备数据(这里以随机数据为例)  
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()  
x_train, x_test = x_train / 255.0, x_test / 255.0  
x_train = x_train.reshape(-1, 28 * 28)  
x_test = x_test.reshape(-1, 28 * 28)  # 定义神经网络模型  
model = Sequential([  Flatten(input_shape=(28 * 28,)),  Dense(256, activation='relu'),  Dense(128, activation='relu'),  Dense(10, activation='softmax')  
])  # 编译模型  
model.compile(optimizer='adam',  loss='sparse_categorical_crossentropy',  metrics=['accuracy'])  # 训练模型  
model.fit(x_train, y_train, epochs=5)  # 评估模型  
model.evaluate(x_test, y_test)
3. Keras

Keras是一个高级神经网络API,它可以运行在TensorFlow、Theano和Microsoft Cognitive Toolkit(CNTK)之上。Keras的设计哲学是让用户能够快速进行实验,同时能够将想法转化为代码。Keras提供了简洁和模块化的API,使其易于学习和使用。

Keras的特点
  • 用户友好:Keras提供了简洁和模块化的API,使得构建和训练神经网络模型变得非常容易。
  • 易于扩展:Keras的模块化设计使得它非常易于扩展。你可以定义自己的层、损失函数和优化器,并将其与现有的Keras组件一起使用。
  • 与TensorFlow集成:由于Keras现在是TensorFlow的一部分(作为tf.keras),你可以享受TensorFlow的所有功能和优化。
Keras的用例

Keras因其简洁的API和易于使用的特性而非常适合初学者和快速原型设计。由于它与TensorFlow的紧密集成,它也越来越多地被用于生产环境。

Keras的安装

由于Keras现在是TensorFlow的一部分,你可以通过安装TensorFlow来安装Keras:

pip install tensorflow

或者,你可以只安装tf.keras(但这通常不是必要的):

pip install tensorflow-keras
Keras代码示例

下面是一个使用Keras(作为tf.keras的一部分)构建和训练简单神经网络的示例:

import tensorflow as tf  
from tensorflow.keras.models import Sequential  
from tensorflow.keras.layers import Dense, Flatten  # 准备数据(这里以随机数据为例)  
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()  
x_train, x_test = x_train / 255.0, x_test / 255.0  
x_train = x_train.reshape(-1, 28 * 28)  
x_test = x_test.reshape(-1, 28 * 28)  # 定义神经网络模型  
model = Sequential([  Flatten(input_shape=(28 * 28,)),  Dense(256, activation='relu'),  Dense(128, activation='relu'),  Dense(10, activation='softmax')  
])  # 编译模型  
model.compile(optimizer='adam',  loss='sparse_categorical_crossentropy',  metrics=['accuracy'])  # 训练模型  
model.fit(x_train, y_train, epochs=5)  # 评估模型  
model.evaluate(x_test, y_test)
4. Scikit-learn

Scikit-learn是一个用于Python编程语言的开源机器学习库。它提供了各种简单高效的工具,用于数据挖掘和数据分析,并实现了许多常见的机器学习算法,如分类、回归、聚类、降维等。Scikit-learn的API设计简洁一致,使其易于学习和使用。

Scikit-learn的特点
  • 简洁的API设计:Scikit-learn的API设计得非常直观和简洁,使得用户能够轻松地调用各种机器学习算法和工具。无论是初学者还是经验丰富的专家,都能够快速上手并享受使用Scikit-learn带来的便利。
  • 丰富的算法库:Scikit-learn包含了大量的机器学习算法,涵盖了从分类、回归、聚类到降维等多个领域。这些算法都经过了精心设计和优化,能够在各种数据集上实现高性能的预测和建模。
  • 高效性:Scikit-learn的底层实现采用了优化的数值计算库,如NumPy和SciPy,使得算法的执行速度非常快。同时,Scikit-learn还提供了并行计算和多核处理的支持,能够进一步提高计算效率。
  • 完善的文档和社区支持:Scikit-learn的官方文档非常完善,包含了详细的安装指南、API文档和教程。此外,Scikit-learn还拥有庞大的社区支持,用户可以在各种论坛和社交媒体上获得帮助和解答问题。
Scikit-learn的用例
  1. 金融服务:在金融服务领域,Scikit-learn被广泛应用于信用评分、欺诈检测、股票价格预测等方面。通过构建高效的机器学习模型,金融机构能够更准确地评估客户的信用风险、识别欺诈行为并预测市场走势。
  2. 医疗保健:在医疗保健领域,Scikit-learn可以用于疾病预测、患者分类、药物效果评估等方面。通过利用医疗数据和机器学习算法,医生能够更准确地诊断疾病、制定治疗方案并评估药物效果。
  3. 电子商务:在电子商务领域,Scikit-learn可以用于用户行为分析、商品推荐、销售预测等方面。通过挖掘用户的购物数据和浏览行为,电子商务平台能够为用户提供更个性化的推荐和服务,提高用户满意度和销售额。
Scikit-learn的安装

使用pip安装
打开命令行工具,在Windows上可以使用命令提示符(CMD)或PowerShell,在macOS或Linux上打开终端(Terminal)。然后输入以下命令:

pip install scikit-learn

使用conda安装

如果你使用的是Anaconda或Miniconda这样的科学计算平台,你可以使用conda包管理器来安装Scikit-learn。在Windows上,你可以使用Anaconda Prompt。在macOS或Linux上,打开终端并激活你的conda环境(如果尚未激活)。然后输入以下命令:

conda install scikit-learn
Scikit-learn的代码示例 

以下是一个关于Scikit-learn用法的基本示例,涵盖了数据加载、预处理、模型训练和评估等步骤。

from sklearn.model_selection import train_test_split  
from sklearn.preprocessing import StandardScaler  
from sklearn.linear_model import LinearRegression  
from sklearn.metrics import mean_squared_error  
import numpy as np  # 假设我们有一些人的身高(X)和对应的体重(y)  
X = np.array([[5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20]]).reshape(-1, 1)  
y = np.array([50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125])  # 划分数据集为训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  # 数据预处理(如特征缩放)  
scaler = StandardScaler()  
X_train = scaler.fit_transform(X_train)  
X_test = scaler.transform(X_test)  # 创建线性回归模型  
model = LinearRegression()  # 训练模型  
model.fit(X_train, y_train)  # 使用模型进行预测  
y_pred = model.predict(X_test)  # 评估模型性能(如计算均方误差)  
mse = mean_squared_error(y_test, y_pred)  
print(f"测试集的均方误差(MSE): {mse}")  # 预测一个新的身高值对应的体重  
new_height = np.array([[10.5]])  
new_height_scaled = scaler.transform(new_height)  
predicted_weight = model.predict(new_height_scaled)  
print(f"预测身高 10.5 的体重为: {predicted_weight[0]}")

这个示例展示了如何使用Scikit-learn进行简单的线性回归分析。Scikit-learn还支持许多其他类型的机器学习算法,包括分类、聚类、降维等。通过学习和实践这些示例和高级用法,可以更好地理解和应用Scikit-learn进行数据分析和机器学习。

相关文章:

【艾思科蓝】机器学习框架终极指南:PyTorch vs TensorFlow vs Keras vs Scikit-learn

第十届建筑、土木与水利工程国际学术会议(ICACHE 2024)_艾思科蓝_学术一站式服务平台 更多学术会议请看:学术会议-学术交流征稿-学术会议在线-艾思科蓝 目录 引言 1. PyTorch PyTorch的特点 PyTorch的用例 PyTorch的安装 PyTorch代码示例 2. TensorFlow …...

招联金融秋招内推2025

【投递方式】 直接扫下方二维码,或点击内推官网https://wecruit.hotjob.cn/SU61025e262f9d247b98e0a2c2/mc/position/campus,使用内推码 igcefb 投递) 【招聘岗位】 后台开发 前端开发 数据开发 数据运营 算法开发 技术运维 软件测试 产品策…...

遮罩解决图片悬浮操作看不到的情况

未悬浮效果 悬浮效果 如果仅仅是添加绝对定位&#xff0c;那么遇到白色图片&#xff0c;就会看不到白色字体。通过遮罩&#xff08;绝对定位透明度&#xff09;就可以解决这个问题。 <script setup> </script><template><div class"box"><…...

IoT网关的主要功能有哪些?天拓四方

在数字化浪潮席卷全球的今天&#xff0c;物联网&#xff08;IoT&#xff09;技术凭借其独特的优势&#xff0c;逐渐在各个领域展现出强大的生命力。而IoT网关&#xff0c;作为连接物理世界与数字世界的桥梁&#xff0c;其在物联网体系中的作用愈发凸显。 一、数据聚合与预处理…...

继承实现单例模式的探索(一)

前言 之前看到朋友采用继承的方式来实现单例模式&#xff0c;觉得很厉害&#xff0c;随后自己去探索了一番&#xff0c;以前实现单例模式都是把代码内联到具体的类中&#xff0c;这使得工程中每次需要使用单例模式时&#xff0c;都采用拷贝的方式&#xff0c;增加了很多冗余代码…...

【代码实现】opencv 高斯模糊和pytorch 高斯模糊

wiki百科 Gaussian Blur&#xff0c;也叫高斯平滑&#xff0c;是在Adobe Photoshop、GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果&#xff0c;通常用它来减少图像噪声以及降低细节层次。 opencv实现 opencv实现高斯滤波有两种方式&#xff0c; 1、是使用自带的cv2…...

python基础语法2

文章目录 1.顺序语句2.条件语句2.1 语法格式 3.缩进与代码块4.空语句 pass5.循环语句5.1 while循环5.2 for循环 5.3 continue与break 1.顺序语句 默认情况下&#xff0c;python的代码都是按照从上到下的顺序依次执行的。 print(hello ) print(world)结果一定是hello world。写…...

linux第一课:下载与安装

这是我的个人复习笔记&#xff0c;草稿箱字太多会卡就发这了&#xff0c;欢迎大家阅读。 Kali Linux&#xff0c;黑客必备神器。跟着我&#xff0c;带你从入门到入狱&#xff01; 第一课&#xff0c;下载与安装。 第一步&#xff1a; 在官网下载Centos镜像&#xff1a;http…...

虚拟机添加共享文件夹后仍无法显示文件

参考: https://blog.csdn.net/Pretender_1205/article/details/134859089 进入/mnt/hgfs目录下执行 sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other/mnt/hgfs 是挂载点&#xff0c;也可以修改为其他挂载点-o allow_other表示允许其他用户(普通用户)访问共…...

OSPF协议

基础知识 OSPF:开放式最短路径优先协议 (无类别链路状态IGP动态协议) OSPF的特点&#xff1a; 1.OSPF将自治系统划分为逻辑上的区域&#xff0c;使用LSA来发布路由信息&#xff0c;并通过OSPF报文在区域内路由器之间交互建立链路状态数据库和路由表 2.支持等开销的负载均衡…...

行为设计模式 -观察者模式- JAVA

观察者模式 一.简介二. 案例2.1 抽象主题&#xff08;Subject&#xff09;2.2 具体主题&#xff08;Concrete Subject&#xff09;2.3 抽象观察者&#xff08;Observer&#xff09;2.4 具体观察者&#xff08;Concrete Observer&#xff09;2.5 测试 三. 结论3.1 优缺点3.2 使用…...

在阿里工作是一种什么体验?

很多人都对在阿里工作感到好奇&#xff0c;今天就来给大家分享一下在阿里工作是一种什么体验~ 首先&#xff0c;先来介绍一下阿里的职位等级划分标准。 简单来讲&#xff0c;阿里的职位等级可以认为是 P 序列和 M 序列&#xff0c;但目前 M 序列已经不太对中下层员工开放了&…...

828华为云征文|华为云Flexus云服务器X实例——uniapp功能开发、搭建股票系统选择用什么服务器比较好?

在二次开发、安装搭建股票系统时&#xff0c;选择华为云Flexus X服务器是一个值得考虑的优质选项。以下是一些具体的建议&#xff1a; 测试环境&#xff1a;Linux系统CentOS7.6、宝塔、PHP7.3、MySQL5.7&#xff0c;根目录public&#xff0c;伪静态thinkphp&#xff0c;开启ssl…...

电子电路元件器介绍与选型——晶振

一、晶振 在我们使用嘉立创的时候&#xff0c;经常会看到晶振接到两个电容&#xff0c;这两个电容毫无疑问是滤波的&#xff0c;整个晶振其实就是一个振荡器&#xff0c;但这个振荡器会将其他频率给过滤掉&#xff0c;只保留一个频率也就是晶振的标称频率。当然上面讲的很明显是…...

【IEEE PDF eXpress】格式不对

目录 一、问题二、解决方法 一、问题 word的文档&#xff0c;用IEEE PDF eXpress网站生成pdf后&#xff0c;提交论文出现错误&#xff1a; Document validation failed due to the following errors: Content exceeds IEEE template margins for its format (Page 1:Bottom).…...

OpenAI全新多模态内容审核模型上线:基于 GPT-4o,可检测文本和图像

在数字时代&#xff0c;内容安全问题愈发受到重视。9月26日&#xff0c;OpenAI 正式推出了一款全新的多模态内容审核模型&#xff0c;名为 “omni-moderation-latest”。 该模型基于最新的 GPT-4o 技术&#xff0c;能够准确地识别检测有害文本图像。这一更新将为开发者提供强大…...

Visual Studio 字体与主题推荐

个人推荐&#xff0c;仅供参考&#xff1a; 主题&#xff1a;One Monokai VS Theme 链接&#xff1a;One Monokai VS Theme - Visual Studio Marketplacehttps://marketplace.visualstudio.com/items?itemNameazemoh.onemonokai 效果&#xff1a; 字体&#xff1a;JetBrain…...

信息学奥赛一本通 1416:【17NOIP普及组】棋盘 | 洛谷 P3956 [NOIP2017 普及组] 棋盘

【题目链接】 洛谷 P3956 [NOIP2017 普及组] 棋盘 ybt 1416&#xff1a;【17NOIP普及组】棋盘 【题目考点】 1. 深搜&#xff1a;深搜回溯 2. 深搜剪枝&#xff1a;最优化剪枝 【解题思路】 搜索从左上角到右下角的所有走法中花费金币最少的走法。 需要使用深搜回溯&…...

UE4完整教程 UE4简介 UE4学习攻略及文件格式

开头附上工作招聘面试必备问题噢~~包括综合面试题、无领导小组面试题资源文件免费!全文干货。 UE4简介学习攻略UE4Demo代码面试内容资源-CSDN文库https://download.csdn.net/download/m0_72216164/89825102 工作招聘无领导小组面试全攻略最常见面试题(第一部分)共有17章+可…...

JVM内存回收机制

目录 1.JVM运行时数据区 2.JVM类加载过程 3.双清委派模型 4.垃圾回收机制&#xff08;GC&#xff09; 找出谁是垃圾方案一&#xff1a;引用计数 找出谁是垃圾&#xff1a;方案二&#xff0c;可达性分析 释放垃圾的内存空间 判断垃圾&#xff1a;jvm依据对象的年龄对 对象…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...