什么是Pytorch

人工智能33

什么是Pytorch


你好,这篇文章咱们讨论一下关于「什么是Pytorch」的事情...

概述

PyTorch是一个基于Python的科学计算库,它和Numpy类似,但是可以利用GPU进行计算。而且,PyTorch还是一个动态的神经网络库,与TensorFlow不同,PyTorch的计算图是根据代码动态变化的,从而可以更加灵活地构建模型。

PyTorch内置了大量的神经网络模块和优化器,使得用户能够方便地进行神经网络的构建和训练。

安装

PyTorch可以通过pip来安装:

pip install torch

如果需要使用GPU,还需要安装相应的GPU版本。

张量

PyTorch的核心数据结构是张量(Tensor),可以类比于Numpy中的数组(Array)。在PyTorch中,张量可以是任意维度的。

创建一个张量:

import torch

x = torch.Tensor([[1, 2, 3],
 [4, 5, 6]])
print(x)

输出:

tensor([[1., 2., 3.],
 [4., 5., 6.]])

可以看出,张量和Numpy中的数组非常相似,但是有一些细微的区别。比如,张量可以利用GPU进行计算,而Numpy数组则不行。

自动求导

PyTorch的一个重要特性是其自动求导机制。通过自动求导,可以在不手动计算梯度的情况下,实现神经网络的训练。

在PyTorch中,每一个张量都可以设置是否需要求导,设置方式如下:

x = torch.Tensor([[1, 2, 3],
 [4, 5, 6]])
x.requires_grad = True

然后,可以利用这个张量来构建计算图,计算图记录了所有的计算过程,可以根据计算图来自动求导。

y = x artical cgpt2md.sh _content1.txt _content.txt current_url.txt log online pic.txt seo topic.txt upload-markdown-to-wordpress.py urls 2 + 2 artical cgpt2md.sh _content1.txt _content.txt current_url.txt log online pic.txt seo topic.txt upload-markdown-to-wordpress.py urls x + 1
z = y.mean()

z.backward()

上面的代码,首先计算出y和z的值,然后调用backward函数,自动计算z对x的梯度。

print(x.grad)

输出:

tensor([[1.5000, 2.0000, 2.5000],
 [3.0000, 3.5000, 4.0000]])

可以看到,x.grad存储了z对x的梯度。如果想要清空梯度,可以调用x.grad.zero_()函数。

神经网络

PyTorch可以方便地构建神经网络。首先,需要定义一个继承自nn.Module的类,这个类有两个重要的函数,分别是forward和backward。forward函数定义了前向传播的过程,backward函数定义了反向传播的过程。

import torch.nn as nn

class Net(nn.Module):
 def __init__(self):
 super(Net, self).__init__()
 self.fc1 = nn.Linear(3, 2)
 self.fc2 = nn.Linear(2, 1)

 def forward(self, x):
 x = self.fc1(x)
 x = torch.relu(x)
 x = self.fc2(x)
 x = torch.sigmoid(x)
 return x

上面的代码定义了一个神经网络,包含两层全连接层和一个非线性激活函数relu和sigmoid。可以通过net.parameters()来获取模型的参数。

net = Net()
print(list(net.parameters()))

输出:

[Parameter containing:
tensor([[ 0.2676, -0.2028, -0.1786],
 [-0.1221, -0.3829, 0.2672]], requires_grad=True),
 Parameter containing:
tensor([0.2634, 0.3922], requires_grad=True),
 Parameter containing:
tensor([[-0.3344, 0.4911]], requires_grad=True),
 Parameter containing:
tensor([-0.1126], requires_grad=True)]

可以看到,网络有4个参数,即两个权重和两个偏置。

训练

PyTorch提供了很多优化器,比如SGD和Adam,用于优化神经网络的参数。

import torch.optim as optim

criterion = nn.MSELoss()
optimizer = optim.SGD(net.parameters(), lr=0.1)

for epoch in range(1000):
 optimizer.zero_grad()
 output = net(x)
 loss = criterion(output, y)
 loss.backward()
 optimizer.step()

print(list(net.parameters()))

上面的代码定义了一个均方误差损失函数和一个随机梯度下降优化器,每个epoch进行一次优化。可以看到,随着训练的进行,网络的参数逐渐趋向于最优值。

总结

PyTorch是一个非常强大的深度学习框架,具有动态计算图、自动求导、GPU加速等特点。通过PyTorch,可以方便地构建和训练神经网络。下面,给出一些学习PyTorch的资源:

  • 官方文档:https://pytorch.org/docs/stable/index.html
  • PyTorch教程:https://pytorch.org/tutorials/
  • 《深度学习框架PyTorch:入门与实践》:https://github.com/chenyuntc/pytorch-book

大家都在看:

【Python爬虫】爬取2022软科全国大学排行榜

目录

1.任务要求

2.网络爬虫实现原理

3.系统设计与代码实现

3.1 第一题

3.1.1 最初设计方案:采用request+BeautifulSoup 方式

3.1.2 更改后的设计方案:采用request直接获取json格式的html信息。

3.2 第二题

3.2.1 流程图

3.2.1 代码

3.3 第三题

3.3.1 流程图

3.3.2 代码

4.运行结果

4.1 第一题

4.2 第二题

4.3 第三题

5.结果评价

6.不足和改进之处

1.任务要求

访问网址https://www.shanghairanking.cn/rankings,爬取排行榜数据,分析按区域的大学数量排行,得出有效结论。

  1. 爬取主榜数据并保存在文件中。
  2. 分析每个地区上榜大学的数量,保存在文件中。
  3. 分析前十名的地区的大学数量,绘制柱状图。
  4. 说明爬虫爬取过程中可能涉及到的社会、健康、安全、法律以及文化问题,并并评价和说明分析结果对于社会、健康、安全、法律以及文化的影响,符合道德和社会公共利益,理解应承担的责任。

注:本题60分。

2.网络爬虫实现原理

什么是Pytorch

3.系统设计与代码实现

3.1 第一题

3.1.1 最初设计方案: 采用request+BeautifulSoup 方式

什么是Pytorch

代码如下:

什么是Pytorch

什么是Pytorch

什么是Pytorch

3.1.2 更改后的设计方案:采用request直接获取json格式的html信息。

  1. 从网络上获取大学排名网页内容 getHTMLText(),先进行UA伪装,随后用requests库爬取获取网页编码。

什么是Pytorch

最后遍历将将内容存储到ulist列表中。

什么是Pytorch

.利用数据结构将结果储存到文件之中WriteToFile(),利用DataFrame存储为.xlsx文件

什么是Pytorch

3.2 第二题

3.2.1 流程图

什么是Pytorch

3.2.1 代码

import pandas as pd
from matplotlib import pyplot as plt
import numpy as np

# (2)分析每个地区上榜大学的数量,保存在文件中。

ranking = pd.read_excel('E:\\学习\\代码\\Python_homework\\期末课程设计\\experiment2\\ranking.xlsx')

r_group = ranking.groupby(['省市'])

r = r_group.size().reset_index()
new_col = ['province', 'count']
r.columns = new_col
# print(r)

df = r.sort_values(by='count', ascending=False)
df.to_excel('E:\\学习\\代码\\Python_homework\\期末课程设计\\experiment2\\regionalRanking.xlsx')

3.3 第三题

3.3.1 流程图

什么是Pytorch

3.3.2 代码

# (3)分析前十名的地区的大学数量,绘制柱状图。

df1 = pd.read_excel('E:\\学习\\代码\\Python_homework\\期末课程设计\\experiment2\\regionalRanking.xlsx')

# 正确显示中文和负号
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 设置x和y轴的值
x = df1['province'][0:10]
y = df1['count'][0:10]
# 绘制柱状图
p = plt.bar(x, y)
# 设置标签值
plt.bar_label(p, label_type='edge')
# 标题名
plt.title('上榜大学排名前十的省份')
# x轴标签名
plt.xlabel('省份')
# y轴标签名
plt.ylabel('数量')
# 显示柱状图
plt.show()

4.运行结果

4.1 第一题

什么是Pytorch

4.2 第二题

什么是Pytorch

4.3 第三题

什么是Pytorch

从柱状图可以得出结论,大学排名前十的省份绝大多数是人口和经济大省,除了北京作为我国的首都,但它是我国的政治和文化中心是正常的。

[En]

From the bar chart, it can be concluded that the vast majority of the provinces with the top 10 universities are large provinces in population and economy, except Beijing as the capital of our country, but it is normal that it is the political and cultural center of our country.

5.结果评价

什么是Pytorch

6.不足和改进之处

什么是Pytorch

Original: https://blog.csdn.net/m0_67463447/article/details/125581182
Author: 天的命名词
Title: 【Python爬虫】爬取2022软科全国大学排行榜

相关文章
人工智能

CloudCompare&PCL 点云分割之区域生长

文章目录 一、简介 二、算法实现 * 2.1算法步骤 2.2代码实现 三、实现效果 四、小结 一、简介 点云分割作为许多应用的前提,其直接会关乎到后续利用点云数据进行曲面重建、特征提取等处理的效果。区...
人工智能

音频自动增益算法

语音自动增益(AGC)算法,指的是数字层面的,语音波形都是0101数字组成,指的是把这个波形统一扩大或压缩一个权值,以提高或降低声音响度 最简单的硬性增益处理是对所有音频采样乘上一个增益因子,它也等同...
人工智能

详解麦克风阵列的原理、分类及作用

从字面上看,麦克风阵列指的就是麦克风的排列。也就是将一定数目的麦克风按照一定的规则形状进行布局形成的阵列,用来对声音信号空间特性的传播进行采集的系统。按照布局形状可以将麦克风阵列分为线性、立体和平面三...
人工智能

小程序轻松实现IM即时通讯多人聊天室

IM多人聊天室功能简介 ZIM SDK 提供多人房间聊天功能,支持用户向房间内发送文本消息或自定义消息,实现了多人在线交流、同步分享。 多人房间聊天功能可应用于小班课或者会议室等场景,房间成员数量上限...