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

用Python开启人工智能之旅(四)深度学习的框架和使用方法

第四部分:深度学习的框架和使用方法

在这里插入图片描述

用Python开启人工智能之旅(一)Python简介与安装

用Python开启人工智能之旅(二)Python基础

用Python开启人工智能之旅(三)常用的机器学习算法与实现

用Python开启人工智能之旅(四)常用的机器学习算法与实现

用Python开启人工智能之旅(五)AI项目实战中Python基础

深度学习作为机器学习的一个分支,涉及到大量的计算和模型训练。在Python中,众多深度学习框架和包为开发者提供了高效的计算资源和灵活的模型构建方式。在这一部分,我们将介绍常用的深度学习框架,并展示如何使用它们实现各种深度学习任务。

主要包括以下内容:

  1. TensorFlow与Keras
  2. PyTorch
  3. MXNet
  4. Theano
  5. 深度学习常用工具包
4.1 TensorFlow与Keras

TensorFlow是由Google开发的开源深度学习框架,广泛应用于图像识别、自然语言处理等领域。TensorFlow原生支持分布式计算,并具有强大的社区支持。Keras是TensorFlow的高级API,简化了模型的构建与训练过程,使得深度学习变得更加容易。

  • TensorFlow:用于模型的定义、训练和评估,支持低级别的控制与优化。
  • Keras:提供高级API,构建深度学习模型更加直观和简洁。
4.1.1 安装TensorFlow与Keras

在使用TensorFlow之前,首先需要安装TensorFlow包。Keras已经集成在TensorFlow中,因此安装TensorFlow就能使用Keras。

pip install tensorflow
4.1.2 TensorFlow与Keras实现基本模型

下面是一个使用Keras构建和训练简单神经网络的例子。

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder
import numpy as np# 加载数据
iris = load_iris()
X = iris.data
y = iris.target
y = np.expand_dims(y, axis=1)# 数据预处理
encoder = OneHotEncoder(sparse=False)
y = encoder.fit_transform(y)# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)# 创建简单的神经网络模型
model = Sequential()
model.add(Dense(10, input_dim=4, activation='relu'))  # 隐藏层
model.add(Dense(3, activation='softmax'))  # 输出层,3个分类# 编译模型
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])# 训练模型
model.fit(X_train, y_train, epochs=100, batch_size=10, verbose=1)# 测试模型
_, accuracy = model.evaluate(X_test, y_test)
print(f'Accuracy: {accuracy * 100:.2f}%')
4.2 PyTorch

PyTorch是由Facebook开发的深度学习框架,以其动态计算图和强大的GPU支持而闻名。它具有灵活性和易于调试的特点,广泛应用于学术研究和工业实践中。与TensorFlow不同,PyTorch使用动态图,这使得它更容易调试和修改模型。

4.2.1 安装PyTorch
pip install torch torchvision
4.2.2 PyTorch实现基本模型

下面是一个使用PyTorch构建简单神经网络并进行训练的示例。

import torch
import torch.nn as nn
import torch.optim as optim
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder
import numpy as np# 加载数据
iris = load_iris()
X = iris.data
y = iris.target
y = np.expand_dims(y, axis=1)# 数据预处理
encoder = OneHotEncoder(sparse=False)
y = encoder.fit_transform(y)# 转换为Tensor
X = torch.tensor(X, dtype=torch.float32)
y = torch.tensor(y, dtype=torch.float32)# 创建训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)# 定义神经网络模型
class SimpleNN(nn.Module):def __init__(self):super(SimpleNN, self).__init__()self.layer1 = nn.Linear(4, 10)  # 输入层到隐藏层self.layer2 = nn.Linear(10, 3)  # 隐藏层到输出层def forward(self, x):x = torch.relu(self.layer1(x))x = self.layer2(x)return x# 初始化模型
model = SimpleNN()# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)# 训练模型
for epoch in range(100):model.train()optimizer.zero_grad()outputs = model(X_train)loss = criterion(outputs, torch.max(y_train, 1)[1])  # 使用CrossEntropyLossloss.backward()optimizer.step()if (epoch + 1) % 10 == 0:print(f'Epoch [{epoch+1}/100], Loss: {loss.item():.4f}')# 测试模型
model.eval()
with torch.no_grad():outputs = model(X_test)_, predicted = torch.max(outputs.data, 1)_, labels = torch.max(y_test, 1)accuracy = (predicted == labels).sum().item() / len(y_test)print(f'Accuracy: {accuracy * 100:.2f}%')
4.3 MXNet

MXNet是一个高效的深度学习框架,由Apache基金会管理,支持分布式计算并可以部署在多个平台。MXNet的特点是灵活性和高效性,支持多种语言接口,包括Python、Scala、Julia和R。

4.3.1 安装MXNet
pip install mxnet
4.3.2 MXNet实现基本模型

以下是一个使用MXNet实现简单神经网络的示例:

import mxnet as mx
from mxnet import nd, gluon, autograd
from mxnet.gluon import nn
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder
import numpy as np# 加载数据
iris = load_iris()
X = iris.data
y = iris.target
y = np.expand_dims(y, axis=1)# 数据预处理
encoder = OneHotEncoder(sparse=False)
y = encoder.fit_transform(y)# 转换为NDArray
X = nd.array(X)
y = nd.array(y)# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)# 定义网络结构
class SimpleNN(gluon.nn.Block):def __init__(self, **kwargs):super(SimpleNN, self).__init__(**kwargs)self.dense0 = nn.Dense(10, activation='relu')self.dense1 = nn.Dense(3, activation='softmax')def forward(self, x):x = self.dense0(x)x = self.dense1(x)return x# 初始化模型
model = SimpleNN()
model.initialize(mx.init.Xavier(), ctx=mx.cpu())# 定义损失函数和优化器
loss_fn = gluon.loss.SoftmaxCrossEntropyLoss()
optimizer = gluon.Trainer(model.collect_params(), 'adam')# 训练模型
for epoch in range(100):with autograd.record():output = model(X_train)loss = loss_fn(output, y_train)loss.backward()optimizer.step(len(X_train))if (epoch + 1) % 10 == 0:print(f'Epoch [{epoch+1}/100], Loss: {loss.mean().asscalar():.4f}')# 测试模型
output = model(X_test)
accuracy = (nd.argmax(output, axis=1) == nd.argmax(y_test, axis=1)).mean().asscalar()
print(f'Accuracy: {accuracy * 100:.2f}%')
4.4 Theano

Theano是一个深度学习框架,早期由蒙特利尔大学开发,并为深度学习的研究提供了强大的支持。尽管现在Theano的开发已停止,但它仍然在许多学术研究中被使用。

4.4.1 安装Theano
pip install theano
4.4.2 Theano实现基本模型

以下是一个使用Theano实现简单神经网络的例子:

import numpy as np
import theano
import theano.tensor as T
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder# 加载数据
iris = load_iris()
X = iris.data
y = iris.target
y = np.expand_dims(y, axis=1)# 数据预处理
encoder = OneHotEncoder(sparse=False)
y = encoder.fit_transform(y)# 定义输入和输出变量
X_tensor = T.dmatrix('X')
y_tensor = T.dmatrix('y')# 定义权重和偏置
W = theano.shared(np.random.randn(4, 3), name='W')
b = theano.shared(np.zeros(3), name='b')# 定义模型输出
output = T.nnet.softmax(T.dot(X_tensor, W) + b)# 定义损失函数
loss = T.mean(T.nnet.categorical_crossentropy(output, y_tensor))# 定义梯度和更新规则
grad_W, grad_b = T.grad(loss, [W, b])
learning_rate = 0.01
update_W = W - learning_rate * grad_W
update_b = b - learning_rate * grad_b# 定义训练函数
train = theano.function(inputs=[X_tensor, y_tensor], outputs=loss, updates=[(W, update_W), (b, update_b)])# 训练模型
for epoch in range(100):loss_val = train(X, y)if (epoch + 1) % 10 == 0:print(f'Epoch [{epoch+1}/100], Loss: {loss_val:.4f}')
4.5 深度学习常用工具包
  • NumPy:深度学习中的基础工具,用于矩阵运算和数组操作。
  • Pandas:用于数据处理和分析,帮助组织数据集。
  • Matplotlib/Seaborn:可视化工具,帮助展示训练过程中的损失值、准确率等指标。
  • Scikit-learn:用于数据预处理、评估、模型选择等。

这些工具包在深度学习项目中通常会与TensorFlow、PyTorch等框架一起使用,提供了丰富的支持和功能。

总结

在本部分中,介绍了常见的深度学习框架,包括TensorFlow、Keras、PyTorch、MXNet和Theano,并提供了使用这些框架实现基础深度学习模型的示例。这些框架为深度学习模型的构建、训练和部署提供了强大的支持,可以根据个人的需求和项目特点选择合适的工具包。

用Python开启人工智能之旅(一)Python简介与安装

用Python开启人工智能之旅(二)Python基础

用Python开启人工智能之旅(三)常用的机器学习算法与实现

用Python开启人工智能之旅(四)常用的机器学习算法与实现

用Python开启人工智能之旅(五)AI项目实战中Python基础

了解更多关于AI算法Python实现文章,欢迎关注这个专栏! 点击进入:AI算法Python实现

本文为原创内容,未经许可不得转载。

相关文章:

用Python开启人工智能之旅(四)深度学习的框架和使用方法

第四部分:深度学习的框架和使用方法 用Python开启人工智能之旅(一)Python简介与安装 用Python开启人工智能之旅(二)Python基础 用Python开启人工智能之旅(三)常用的机器学习算法与实现 用Pyt…...

两分钟解决:vscode卡在设置SSH主机,VS Code-正在本地初始化VSCode服务器

问题原因 remote-ssh还是有一些bug的,在跟新之后可能会一直加载初始化SSH主机解决方案 1.打开终端2.登录链接vscode的账号,到家目录下3.找到 .vscode-server文件,删掉这个文件4.重启 vscode 就没问题了...

信号仿真高级工程师面试题

信号仿真高级工程师面试题可能涵盖多个方面,旨在全面评估应聘者的专业知识、技能水平、实践经验和问题解决能力。以下是一些可能的面试题及其简要解析: 一、专业知识与技能 描述你对信号仿真的理解 考察点:对信号仿真基本概念、原理及应用的掌握程度。参考答案:信号仿真是…...

循环和迭代

从更高层次的思维角度来看迭代和循环的区别: 哲学层面: 迭代体现了"螺旋上升"的发展理念,每次迭代都在前一次的基础上有所提升和改进 循环体现了"周而复始"的概念,强调重复相同的过程 思维方式&#xff1a…...

一个简单封装的的nodejs缓存对象

我们在日常编码中,经常会用到缓存,而一个有效的缓存管理,也是大家必不可少的工具。而nodejs没有内置专用的缓存对象,并且由于js的作用域链的原因,很多变量使用起来容易出错,如果用一个通用的缓存管理起来&a…...

【Rust自学】5.3. struct的方法(Method)

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 5.3.1. 什么是方法(Method) 方法和函数类似,也是用fn关键字进行声明,方法也有名称,也有参数&#xff…...

ChatGPT之父:奥尔特曼

奥尔特曼 阿尔特曼一般指萨姆奥尔特曼,他是OpenAI的联合创始人兼首席执行官,被称为“ChatGPT之父”.以下是其具体介绍: 个人经历 1985年4月22日出生于美国芝加哥,8岁学会编程,9岁拥有电脑,对信息技术和互联网产生兴趣.高中就读于约翰巴勒斯中学,后进入斯坦福大学主修计…...

如何在谷歌浏览器中设置桌面快捷方式

在日常使用电脑时,反复在浏览器中输入经常访问的网址不仅耗时,而且降低了工作效率。为了解决这一问题,我们可以通过在主屏幕上创建谷歌浏览器的快捷方式来简化操作。本文将详细介绍如何在Windows和Mac系统中实现这一功能。 一、步骤概述 1. …...

systemverilog中的priority if

1 基本概念 在 SystemVerilog 中,priority - if是一种条件判断结构。它和普通的if - else语句类似,但在条件评估和错误检查方面有自己的特点,主要用于按顺序评估多个条件,并且对不符合预期的情况进行报错。报错如下两点 当所有条件…...

图像处理-Ch2-空间域的图像增强

Ch2 空间域的图像增强 文章目录 Ch2 空间域的图像增强Background灰度变换函数(Gray-level Transformation)对数变换(Logarithmic)幂律变换(Power-Law)分段线性变换函数(Piecewise-Linear)对比度拉伸(Contrast-Stretching)灰度级分层(Gray-level Slicing) 直方图处理(Histogram …...

css 编写注意-1-命名约定

编写按照可维护性、性能和可读性规则: 1.代码组织与结构​​​​​​​ 层次清晰:使用模块化的结构,将样式分块组织。命名规范:采用统一的命名规则(如 BEM、SMACSS)以增强可读性。​​​​​​​ /* BEM …...

虚幻引擎反射机制

在虚幻引擎中,反射系统是一种强大的机制,它允许开发者和引擎本身在运行时获取并操作类、对象、属性和方法的元信息。这个系统是基于UObject(Unreal Engine中所有支持反射的对象的基类)构建的,为游戏开发提供了极大的灵…...

Knife4j Swagger

1. 依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version></dependency>2. 配置 第二步配置完成就可以访问&#xff1a;http://localhost…...

Xcode 16 编译弹窗问题、编译通过无法,编译通过打包等问题汇总

问题1&#xff1a;打包的过程中不断提示 &#xff1a;codesign 想要访问你的钥匙串中的密钥“develop 或者distribution 证书” 解决&#xff1a;打开钥匙串&#xff0c;点击证书---显示简介---信任----改为始终信任 &#xff08;记住 &#xff1a;不能只修改钥匙的显示简介的…...

卷积神经网络入门指南:从原理到实践

目录 1 CNN的发展历史 2 CNN的基本原理 3 CNN核心组件 3.1 卷积操作基础 3.2 卷积层详解 3.3 高级卷积操作 3.3.1 分组卷积&#xff08;Group Convolution&#xff09; 3.3.2 深度可分离卷积&#xff08;Depthwise Separable Convolution&#xff09;&#xff1a; 3.3 池…...

eNSP安装教程(内含安装包)

通过网盘分享的文件&#xff1a;eNSP模拟器.zip 链接: https://pan.baidu.com/s/1wPmAr4MV8YBq3U5i3hbhzQ 提取码: tefj --来自百度网盘超级会员v1的分享 &#xff01;&#xff01;&#xff01;&#xff01;解压后有四个文件&#xff0c;先安装Box&#xff0c;第二个安装cap&a…...

VBA技术资料MF244:利用VBA在图表工作表中创建堆积条形图

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…...

【计算机网络安全】网络攻击

实验二 网络攻击 实验人员&#xff1a;第五组全体成员 一、实验目的&#xff1a; 1&#xff1a;掌握ARP欺骗的原理&#xff0c;实践ARP欺骗的过程。 2&#xff1a;掌握TCP劫持的原理&#xff0c;实践TCP劫持的过程。 3&#xff1a;掌握DNS欺骗的原理&#xff0c;实践DN…...

20241230 基础数学-线性代数-(1)求解特征值(numpy, scipy)

所有代码实现&#xff0c;基于教程中的理论通过python实现出来的。效率不高&#xff0c;但有代码可以看。 由于scipy/sckitlearn/sparkx 底层的实现都被封装了&#xff08;小白兔水平有限&#xff0c;fortran代码实在没看懂&#xff09;这里的实现至少可以和理论公式对应的上。…...

基于图注意力网络的两阶段图匹配点云配准方法

Two-stage graph matching point cloud registration method based on graph attention network— 基于图注意力网络的两阶段图匹配点云配准方法 从两阶段点云配准方法中找一些图匹配的一些灵感。文章提出了两阶段图匹配点云配准网络&#xff08;TSGM-Net&#xff09; TSGM-Ne…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API&#xff0c;让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API&#xff0c;你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...

Vue3中的computer和watch

computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...