机器学习基础(六)TensorFlow与PyTorch

news2025/1/20 1:50:54

导语:上一节我们详细探索了监督与非监督学习的结合使用。,详情可见:

机器学习基础(五)监督与非监督学习的结合-CSDN博客文章浏览阅读4次。将监督学习和非监督学习结合起来,就像将两种不同的艺术形式融合,创造出全新的作品。这种结合利用了两种学习方法的优点,能够处理更复杂的数据集,并提高模型的准确性和泛化能力。https://blog.csdn.net/qq_52213943/article/details/136214916?spm=1001.2014.3001.5502
        这一节,我们将介绍两种数据科学领域极为重要的工具:TensorFlow与PyTorch。

目录

TensorFlow

TensorFlow的核心特点

灵活性与扩展性

强大的社区支持

在生产中的实用性

TensorFlow的应用场景

TensorFlow的安装和基本使用

构建深度学习模型

PyTorch

PyTorch的核心特点

直观的设计

动态计算图

研究友好

PyTorch的应用场景

PyTorch的安装和基本使用

构建深度学习模型

总结


TensorFlow

        TensorFlow是一个开源的软件库,用于高性能数值计算,广泛应用于机器学习和深度学习领域。它由Google Brain团队开发,旨在让研究人员和开发人员轻松地构建和部署机器学习模型。TensorFlow的设计理念强调灵活性和可扩展性,使其成为处理复杂数据计算的强大工具。

TensorFlow的核心特点

灵活性与扩展性

        TensorFlow提供了一个全面的库,包括各种可重用的组件和接口,允许用户自定义模型和算法。这种灵活性不仅限于构建标准模型,如卷积神经网络(CNN)和循环神经网络(RNN),还可以实现创新的研究想法。

强大的社区支持

        TensorFlow背后有一个庞大而活跃的社区,提供丰富的学习资源、论坛讨论和共享代码。无论是遇到技术难题还是寻找合作,TensorFlow社区都是一个宝贵的资源。

在生产中的实用性

        TensorFlow不仅适用于研究和实验,也适合生产环境。它提供了多种工具,使得从原型到部署的过程更加顺畅。

TensorFlow的应用场景

        TensorFlow广泛应用于语音识别、图像识别、自然语言处理等领域。例如,在图像识别中,通过训练一个深度神经网络,TensorFlow能够识别和分类图像中的对象。在自然语言处理中,它可以用于构建模型,理解和生成人类语言。

TensorFlow的安装和基本使用

        TensorFlow支持多种平台,包括Windows、Linux和macOS。安装TensorFlow相对简单,通常只需要几个命令。

# 安装TensorFlow
pip install tensorflow

        一旦安装完成,你就可以开始构建和训练模型了。以下是一个简单的TensorFlow代码示例,演示了如何构建一个简单的线性模型:

import tensorflow as tf

# 创建TensorFlow常量
a = tf.constant(2)
b = tf.constant(3)

# 使用TensorFlow进行数学运算
c = tf.add(a, b)

# 启动TensorFlow会话
with tf.Session() as sess:
    result = sess.run(c)
    print(f"The sum of a and b is: {result}")

构建深度学习模型

        TensorFlow的真正强大之处在于其深度学习功能。以下是一个简单的神经网络示例,用于识别手写数字(使用MNIST数据集)。

from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.utils import to_categorical

# 加载MNIST数据集
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# 数据预处理
train_images = train_images / 255.0
test_images = test_images / 255.0

# 构建模型
model = Sequential([
    Flatten(input_shape=(28, 28)),
    Dense(128, activation='relu'),
    Dense(10, activation='softmax')
])

# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# 训练模型
model.fit(train_images, to_categorical(train_labels), epochs=5)

# 评估模型
test_loss, test_acc = model.evaluate(test_images, to_categorical(test_labels))
print(f"Test accuracy: {test_acc}")

        这段代码首先加载了MNIST数据集,并对数据进行了简单的预处理。然后,它构建了一个顺序模型,包括一个平坦层和两个密集层。模型使用Adam优化器和交叉熵损失函数进行编译。最后,模型在训练数据上进行了训练,并在测试数据上进行了评估,以检查其准确性。

PyTorch

        PyTorch是一个开源的机器学习库,广泛应用于计算机视觉和自然语言处理等领域。由Facebook的人工智能研究团队(FAIR)开发,PyTorch以其直观的设计和动态计算图而受到科研人员和开发者的青睐。

PyTorch的核心特点

直观的设计

        PyTorch的API设计简洁直观,使得构建和调试深度学习模型变得更加容易。它提供了丰富的预构建层,允许快速搭建复杂的网络结构。

动态计算图

        与其他框架的静态图不同,PyTorch使用动态计算图(也称为即时执行),这意味着图的结构可以在运行时改变。这为模型的调试和动态修改提供了极大的灵活性。

研究友好

        PyTorch特别受研究社区的欢迎,因为它能够加速实验过程,使研究人员能够快速迭代和探索新想法。

PyTorch的应用场景

        PyTorch在学术研究中尤其受欢迎,被广泛应用于最前沿的研究项目,包括计算机视觉、自然语言处理、强化学习等领域。PyTorch的灵活性和速度使其成为探索新理念和算法的理想平台。

PyTorch的安装和基本使用

        PyTorch同样支持多种安装方式和多个平台。通常,使用pip或conda可以轻松完成安装。

# 使用pip安装PyTorch 
pip install torch torchvision

        安装完成后,你可以开始使用PyTorch构建模型了。以下是一个简单的PyTorch代码示例,展示了如何创建一个张量。

import torch 
# 创建一个2x3的矩阵,元素为浮点数 
x = torch.rand(2, 3) 
print(x)

构建深度学习模型

        PyTorch的强项之一是构建和训练深度学习模型。以下是使用PyTorch构建一个简单的神经网络来识别MNIST手写数字的示例。

import torch
import torch.nn as nn
import torch.optim as optim
import torchvision.transforms as transforms
from torchvision.datasets import MNIST
from torch.utils.data import DataLoader

# 定义网络结构
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(28*28, 512)
        self.fc2 = nn.Linear(512, 10)

    def forward(self, x):
        x = x.view(-1, 28*28)
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        return x

# 实例化网络、定义损失函数和优化器
net = Net()
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.01)

# 加载数据
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])
trainset = MNIST(root='./data', train=True, download=True, transform=transform)
trainloader = DataLoader(trainset, batch_size=64, shuffle=True)

# 训练网络
for epoch in range(10):  # 遍历数据集多次
    for i, data in enumerate(trainloader, 0):
        inputs, labels = data
        optimizer.zero_grad()
        outputs = net(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

print('Finished Training')

        这段代码首先定义了一个简单的全连接网络,包含两个全连接层。然后,它使用SGD优化器和交叉熵损失函数来训练网络。数据通过MNIST数据集加载和预处理,然后在训练循环中使用。

总结

        TensorFlow和PyTorch都是深度学习的主流框架,各有特色。TensorFlow,由谷歌开发,以其强大的扩展性、稳定性著称,特别适用于大规模计算和生产环境,拥有广泛的社区支持和丰富的学习资源。TensorBoard工具进一步提升了其在模型调试和性能优化方面的便利性。相较而言,PyTorch以其直观的API和动态计算图受到科研界的偏爱,这些特性使得它在快速原型设计和实验性研究中表现出色,同时也支持简易的从研究到生产的转换。

        尽管二者在设计哲学和核心功能上有所不同,但也存在共性,如都提供了高级的神经网络构建模块,支持自动微分和GPU加速计算,这对处理大规模数据集和复杂模型至关重要。选择TensorFlow还是PyTorch,往往取决于项目需求、个人偏好和社区支持。对于追求稳定性和可扩展性的生产环境项目,TensorFlow可能更合适;而对于注重灵活性和快速迭代的研究项目,PyTorch可能更优。随着这两个框架的持续发展,它们之间的差异正逐渐缩小,使得开发者可以根据需求灵活选择或结合使用。

下一节开始我们将进行深度学习基础介绍讲解

深度学习基础(一)神经网络基本原理-CSDN博客文章浏览阅读126次。在如今的科技浪潮中,神经网络作为人工智能的核心技术之一,正日益展现出其强大的能力。从图像识别、语音识别到自然语言处理,神经网络的应用几乎遍布每一个角落。而其背后的原理,源自于对人类大脑极其复杂处理机制的模拟与借鉴。本文将深入浅出地探讨神经网络的基础原理,让我们一起揭开这项神奇技术的面纱。https://blog.csdn.net/qq_52213943/article/details/136235053?spm=1001.2014.3001.5502-----------------

以上,欢迎点赞收藏、评论区交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1469863.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenAI 全新发布文生视频模型 Sora,功能有多强大?

卷疯了卷疯了,短短十几小时内,OpenAI和谷歌接连发布核弹级成果。 国内还没睡的人们,经历了过山车般的疯狂一晚。 就在刚刚,OpenAI突然发布首款文生视频模型——Sora。简单来说就是,AI视频要变天了! PS&a…

《高效使用Redis》- 由面试题“Redis是否为单线程”引发的思考

由面试题“Redis是否为单线程”引发的思考 很多人都遇到过这么一道面试题:Redis是单线程还是多线程?这个问题既简单又复杂。说他简单是因为大多数人都知道Redis是单线程,说复杂是因为这个答案其实并不准确。 难道Redis不是单线程&#xff1f…

Linux进程【补充】

文章目录 进程概念task_struct 进程创建forkvfork写时拷贝 进程状态僵尸进程孤儿进程守护进程 进程地址空间是什么为什么怎么做 进程概念 进程是一个程序的执行实例或者是担当系统资源分配的实体。当一个程序运行时,被从硬盘加载到内存中,操作系统为每个…

你真的了解@Async吗?

你真的了解Async吗? 使用场景: 开发中会碰到一些耗时较长或者不需要立即得到执行结果的逻辑,比如消息推送、商品同步等都可以使用异步方法,这时我们可以用到Async。但是直接使用 Async 会有风险,当我们没有指定线程池…

政安晨【示例演绎虚拟世界开发】(一):Cocos Creator 的 Hello World

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: AI虚拟世界大讲堂 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正。 前言 Cocos Creator是一款非常强大的游戏开发引擎,它有着优秀…

李宏毅2023机器学习作业1--homework1——python语法

# 定义list del_col del_col [0, 38, 39, 46, 51, 56, 57, 64, 69, 74, 75, 82, 87] # 删除raw_x_train中del_col的列,axis为1代表删除列 raw_x_train np.delete(raw_x_train, del_col, axis1) # numpy数组增删查改方法 # 定义列表get_col get_col [35, 36, 37,…

sql语法中所有的条件字段都可以用函数来加工

SELECTt_test.age FROMt_testINNER JOIN t_test_copy1 ON SUBSTR( t_test.age, 1, 4 ) t_test_copy1.idd

加速Python代码的秘密武器,探索Cython的秘密

首先和大家明确一下这个Cython单词的读法,这个单词Cython以前我也不知道怎么读,老后面要用到这个包的时候,老是不清楚读法,才去搜了下,这个单词是读"赛森",就是前面的cy是读"赛"&#…

C语言每日一题(61)盛最多水的容器

题目链接 力扣 11 盛最多水的容器 题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水…

IDEA安装配置以及安装配置Maven

IEDA官方下载地址,有专业版(收费,破解),社区版(免费) 下载 IntelliJ IDEA – 领先的 Java 和 Kotlin IDE 安装配置Maven 1.解压apache-maven-3.6.3-bin.zip,安装maven到D盘softwar…

高校隔离宿舍管理系统

高校隔离宿舍管理系统 获取源码——》公主号:计算机专业毕设大全

堆排序、快速排序和归并排序

堆排序、快速排序和归并排序是所有排序中最重要的三个排序,也是难度最大的三个排序;所以本文单独拿这三个排序来讲解 目录 一、堆排序 1.建堆 2.堆排序 二、快速排序 1.思想解析 2.Hoare版找基准 3.挖坑法找基准 4.快速排序的优化 5.快速排序非…

Java中PDF文件传输有哪些方法?

专栏集锦,大佬们可以收藏以备不时之需: Spring Cloud 专栏:http://t.csdnimg.cn/WDmJ9 Python 专栏:http://t.csdnimg.cn/hMwPR Redis 专栏:http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏:http://t.csdni…

Type-C连接器笔记

一、Type-C的介绍 Type-C是一种全新的USB接口形式,由USB Implementers Forum(USB-IF)制定,并在2014年获得苹果、谷歌、英特尔、微软等厂商支持后开始普及。它是一种通用串行总线(USB)的硬件接口规范&#x…

python学习26

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

软考37-上午题-【数据库】-数据模型、数据库的三级模式和二级映像

一、考情简介 上午题:6分——6道选择题 下午题:15分——一道分析题 E-R图、关系模式:下午考试必考!!!(编制也要考!) 二、数据模型 数据模型是对现实世界数据特征的抽象…

信息抽取(UIE):使用自然语言处理技术提升证券投资决策效率

一、引言 在当今快速变化的证券市场中,信息的价值不言而喻。作为一名资深项目经理,我曾领导一个关键项目,旨在通过先进的信息抽取技术,从海量的文本数据中提取关键事件,如企业并购、新产品发布以及政策环境的变动。这些…

[SUCTF 2019]EasySQL1 题目分析与详解

一、题目介绍 1、题目来源: BUUCTF网站,网址:https://buuoj.cn/challenges 2、题目描述: 通过以上信息,拿到flag。 二、解题思路 首先打开靶机,尝试输入1查看回显,回显如图所示:…

细说python3中sort和sorted

sort和sorted的区别 虽然python3中sort()和sorted()都可以用来排序,但二者有以下两个最主要的区别: sort只能应用在列表list上,而sorted可以对所有可迭代的对象进行排序的操作 sort方法会在原list上直接进行排序,不会创建新的l…

Vue3(pinia) 整合 SpringWebsocket链接url动态传参

前言: 👏作者简介:我是笑霸final,一名热爱技术的在校学生。 📝个人主页:个人主页1 || 笑霸final的主页2 📕系列专栏:java专栏 📧如果文章知识点有错误的地方,…