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

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

机器学习基础(五)监督与非监督学习的结合-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 = dataoptimizer.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.mzph.cn/news/702594.shtml

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

相关文章

1298 - 摘花生问题

题目描述 Hello Kitty 想摘点花生送给她喜欢的米老鼠。她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有…

消息中间件篇之RabbitMQ-消息重复消费

一、导致重复消费的情况 1. 网络抖动。 2. 消费者挂了。 消费者消费消息后,当确认消息还没有发送到MQ时,就发生网络抖动或者消费者宕机。那当消费者恢复后,由于MQ没有收到消息,而且消费者有重试机制,消费者就会再一次消…

python print 格式化输出详解

print 输出字符串和数字 以下实例中列举了print打印各种类型的示例 示例如下, print("qayrup") # 直接输出字符串print(100) # 输出数字str qayrup print(str) # 输出变量L [1,2,a] # 输出列表类型变量 print(L) t (1,2,a…

Folx GO+ 5.27 Mac上优秀好用的下载工具

Folx Pro 5 for Mac是Mac平台上公认的最好的下载工具,功能可以与迅雷相媲美。目前Folx Pro 5 特别版正式上线,新版的Folx整体界面更加简洁漂亮,支持HTTP FTP下载,torrent种子下载,高速下载,定时下载&#x…

C语言中strstr函数的使用!

strstr函数的作用是什么&#xff1f; 查找子字符串 具体直接看下面的这段代码我相信你必明白 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { char *p1 "abcdefghijklmnopqrstuvwxyz"; char* p2 "abc"; char* r…

Open CASCADE学习|提取面的内外环线

在Open CASCADE中&#xff0c;区分内环和外环主要基于面的参数域内环线方向的定义。具体来说&#xff0c;在面的参数域内&#xff0c;沿着环线正方向前进时&#xff0c;如果左侧为面内、右侧为面外&#xff0c;那么该环线被视为外环&#xff1b;反之&#xff0c;如果左侧为面外…

access数据库泄露与IIS短文件名利用

access数据库 Microsoft Office Access是微软把 数据库引擎 的图形用户界面和 软件开发工具 结合在一起的一个 数据库管理系统 它的数据库是没有库名的&#xff0c;都是表名。 (借用别的up的图)是不是感觉有点像excel access数据库的后缀是.mdb access数据库泄露漏洞 如果…

PHATGOOSE:使用LoRA Experts创建低成本混合专家模型实现零样本泛化

这篇2月的新论文介绍了Post-Hoc Adaptive Tokenwise Gating Over an Ocean of Specialized Experts (PHATGOOSE)&#xff0c;这是一种通过利用一组专门的PEFT模块(如LoRA)实现零样本泛化的新方法 这个方法冻结整个模型&#xff0c;包括PEFT模块&#xff0c;并为每个模块训练一…

力扣随笔之移除元素(简单27)

思路&#xff1a;定义一个指针left&#xff0c;使该指针及该指针左边的数全部都不等于val&#xff0c;定义一个遍历指针i&#xff0c;若nums[i] val&#xff0c;则i自加&#xff0c;若nums[i] ! val&#xff0c;则将left&#xff0c;并将nums[i]的值赋给nums[left]&#xff0c…

MySQL引擎对决:深入解析MyISAM和InnoDB的区别

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 MySQL引擎对决&#xff1a;深入解析MyISAM和InnoDB的区别 前言引擎概述MyISAM&#xff1a;InnoDB&#xff1a; 使用场景使用 MyISAM 的最佳实践&#xff1a;使用 InnoDB 的最佳实践&#xff1a;可能的…

Jenkins自动化部署构建说明(8)

Jenkins构建说明 - 20211012 什么是Jenkins? Jenkins 是一款流行的开源持续集成&#xff08;Continuous Integration&#xff09;工具&#xff0c;广泛用于项目开发&#xff0c;具有自动化构建、测试和部署等功能。它是一个自动化的周期性的集成测试过程&#xff0c;从检出代…

QT day3 作业2.22

思维导图&#xff1a; 作业&#xff1a; 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到…

ChatGPT Plus遇到订阅被拒原因与解决方案

ChatGPT Plus被广泛认为相比普通版本更快、更强&#xff0c;并且能最先体验新功能。 很多小伙伴再订阅时遇到图片中的问题 错误提示包括这些&#xff1a; Your credit card was declined.Try paying with a debit card instead.您的信用卡被拒绝了。请尝试用借记卡支付。你的…

【Python】遇到的一些小问题及解决办法汇总

【工具】&#xff1a;pycharm 【环境】&#xff1a;Windows 一、数据集路径导入报错 【错误提示】&#xff1a; SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape 如图&#xff1a; 【原因分析】&a…

pytest如何在类的方法之间共享变量?

在pytest中&#xff0c;setup_class是一个特殊的方法&#xff0c;它用于在类级别的测试开始之前设置一些初始化的状态。这个方法会在类中的任何测试方法执行之前只运行一次。 当你在setup_class中使用self来修改类属性时&#xff0c;你实际上是在修改类的一个实例属性。在Pyth…

嵌入式学习第二十天!(进程)

进程基本概念&#xff1a; 1. 进程&#xff1a; 程序&#xff1a;存放在外存中的一段数据组成的文件 进程&#xff1a;是一个程序动态执行的过程&#xff0c;包括进程的创建、进程的调度、进程的消亡 2. 进程相关命令&#xff1a; 1. top: 动态查看当前系统中的所有进程信息…

简单学习语音唤醒

目录 一、总体介绍 二、来到讯飞开放平台 ​三、代码修改 1.ivw_sample.cpp代码修改 &#xff08;1&#xff09;库的导入 &#xff08;2&#xff09;宏定义​编辑 &#xff08;3&#xff09;定义 &#xff08;4&#xff09;修改OnOutput​编辑 &#xff08;5&#xff0…

C++多态的原理

目录 函数虚表 多态原理 普通调用和多态调用的区别 函数虚表 含有虚函数的类&#xff0c;都会有一个函数虚表指针&#xff0c;指向函数虚表。 class Base{public:virtual void Func1(){cout << "Func1()" << endl;}private:int _b 1;}; _vfptr就是函…

如何在C++中实现文件操作

大家好&#xff0c;今天给大家介绍如何在C中实现文件操作&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 在C中&#xff0c;实现文件操作主要涉及到 <fstream> 库&#xf…

批量删除传参那些事

接口参数&#xff1a; public Object batchDeleteUsers(RequestBody List userIds) 工具提示传参&#xff1a; { “userIds”: [] } 错误&#xff01;&#xff01;&#xff01;讨逆猴子 报错&#xff1a;JSON parse error: Cannot deserialize value of type java.util.ArrayL…