当前位置: 首页 > 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依据对象的年龄对 对象…...

中国身份证号码校验

题目描述 第二届河南省最美教师评选开始了&#xff0c;每一位同学都可以投票选出你支持的人选&#xff0c;但是为了防止刷票&#xff0c;必须通过身份验证才可投票。负责投票平台后台的老大爷希望你能帮他验证身份证号的合法性&#xff0c;防止那些熊孩子随意刷票&#xff0c;…...

【Kubernetes】常见面试题汇总(五十四)

目录 120.创建 init C 容器后&#xff0c;其状态不正常&#xff1f; 特别说明&#xff1a; 题目 1-68 属于【Kubernetes】的常规概念题&#xff0c;即 “ 汇总&#xff08;一&#xff09;~&#xff08;二十二&#xff09;” 。 题目 69-113 属于【Kubernetes】的生产…...

不懂外语也能无障碍交流?探索4款超好用中英翻译工具

嘿&#xff0c;各位外贸流程的小伙伴们&#xff0c;今儿咱们来聊聊那些翻译神器&#xff0c;看看它们在中英文互译这条路上&#xff0c;是怎么给我们这些天天跟洋文打交道的哥们儿姐们儿减轻负担的。我亲身体验了福昕翻译在线、福昕翻译大师、海鲸AI翻译还有腾讯翻译君&#xf…...

C++ WebDriver扩展

概述 WebDriver协议基于HTTP&#xff0c;使用JSON进行数据传输&#xff0c;定义了client与driver之间的通信标准。无论client的实现语言&#xff08;如Java或C#&#xff09;&#xff0c;都能通过协议中的endpoints准确指示driver执行各种操作&#xff0c;覆盖了Selenium的所有功…...

WeChat_DevTools 断点调试方法总结

新建工程&#xff0c;以小程序 login 调试为例&#xff0c;代码如下&#xff1a; // 登录wx.login({success: res > {// 发送 res.code 到后台换取 openId, sessionKey, unionIddebugger;resThis this;wx.showModal({title: 登录成功,content: res.code res.code,comple…...

水波荡漾效果+渲染顺序+简单UI绘制

创建场景及布置 创建新场景Main,在Main场景中创建一个plane物体&#xff0c;命名为WaterWavePla,具体数值及层级面板排布如下&#xff1a; 编写脚本 创建一个文件夹&#xff0c;用于存放脚本&#xff0c;命名Scripts,创建一个子文件夹Effect,存放特效相关脚本&#xff0c;创建…...

深度学习中的结构化概率模型 - 使用图来描述模型结构篇

序言 在深度学习的探索之路上&#xff0c;结构化概率模型以其独特的视角和强大的表达能力&#xff0c;成为了研究复杂数据关系的重要工具。这一模型的核心在于其巧妙地利用图来描述模型结构&#xff0c;将随机变量间的复杂交互关系可视化、结构化。图的引入&#xff0c;不仅为…...

C语言中的栈帧

------------------------ | 局部变量区 | | (根据变量声明而变化) | ------------------------ | 参数区 | | (根据函数原型而变化) | ------------------------ | (可选) 保存寄存器区 | | (编译器/架构特定) | -…...

vue数组根据某些条件进行二次切割

原本的一个一维数组首先 1.根据depnm和bed的不同会分成不同的数组 2.在条件1的基础上分割出来的数组如果存在里面有isBgn1的会进行二次分割 比如原数组是[{depnm:1,bed:2,isBgn:0},{}……] 根据条件一会组成一个二维数组得到 [ [①depnm值一致的一个一维数组], [②bed值一…...

Yolov8改进轻量级网络Ghostnetv2

1,理论部分 轻量级卷积神经网络 (CNN) 专为移动设备上的应用程序而设计,具有更快的推理速度。卷积运算只能捕获窗口区域中的局部信息,这会阻止性能进一步提高。将自我注意引入卷积可以很好地捕获全局信息,但会在很大程度上阻碍实际速度。在本文中,我们提出了一种硬件友好…...