PyTorch安装与基本使用详解
作者:YXHPY 发布时间:2023-05-09 03:20:51
什么要学习PyTorch?
有的人总是选择,选择的人最多的框架,来作为自己的初学框架,比如Tensorflow
,但是大多论文的实现都是基于PyTorch
的,如果我们要深入论文的细节,就必须选择学习入门PyTorch
安装PyTorch
一行命令即可 官网
pip install torch===1.6.0 torchvision===0.7.0 - https://download.pytorch.org/whl/torch_stable.html
时间较久,耐心等待
测试自己是否安装成功
运行命令测试
import torch
x = torch.rand(5,3)
print(x)
输出
tensor([[0.5096, 0.1209, 0.7721],
[0.9486, 0.8676, 0.2157],
[0.0586, 0.3467, 0.5015],
[0.9470, 0.5654, 0.9317],
[0.2127, 0.2386, 0.0629]])
开始学习PyTorch
不初始化的创建张量
import torch
x = torch.empty([5,5])
print(x)
输出
tensor([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
随机创建一个0-1的张量
import torch
x = torch.rand(5,5)
print(x)
输出
tensor([[0.3369, 0.5339, 0.8419, 0.6857, 0.6241],
[0.4991, 0.1691, 0.8356, 0.4574, 0.0395],
[0.9714, 0.2975, 0.9322, 0.5213, 0.8509],
[0.3037, 0.8690, 0.3481, 0.2538, 0.9513],
[0.0156, 0.9516, 0.3674, 0.1831, 0.6466]])
创建全为0的张量
import torch
x = torch.zeros(5,5, dtype=torch.float32)
print(x)
创建的时候可以通过dtype
指定数据类型
输出
tensor([[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.]])
使用数据来直接创建张量
import torch
x = torch.zeros([5,5], dtype=torch.float32)
print(x)
输出
tensor([5., 5.])
使用原有tensor
创建新的tensor
import torch
x = torch.tensor([5,5], dtype=torch.float32)
x = x.new_zeros(5, 3)
y = torch.rand_like(x)
print(x)
print(y)
输出
tensor([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
tensor([[0.5552, 0.3333, 0.0426],
[0.3861, 0.3945, 0.6658],
[0.6978, 0.3508, 0.4813],
[0.8193, 0.2274, 0.8384],
[0.9360, 0.9226, 0.1453]])
观察tensor
的维度信息
x = torch.rand(3,3)
x.size()
输出
torch.Size([3, 3])
一些简单的运算
x = torch.tensor([1])
y = torch.tensor([3])
'''
方式1
'''
z = x + y
'''
方式2
'''
z = torch.add(x, y)
'''
方式3
'''
result = torch.empty(1)
# 不初始化数据
torch.add(x, y, out=result)
# 将结果返回到result中
'''
方式4
'''
x.add_(y)
输出
tensor([4])
索引操作
x = torch.rand(5,5)
x[:,:]
x[1,:]
x[:,1]
x[1,1]
分别输出
tensor([[0.4012, 0.2604, 0.1720, 0.0996, 0.7806],
[0.8734, 0.9087, 0.4828, 0.3543, 0.2375],
[0.0924, 0.9040, 0.4408, 0.9758, 0.2250],
[0.7179, 0.7244, 0.6165, 0.1142, 0.7363],
[0.8504, 0.0391, 0.0753, 0.4530, 0.7372]])
tensor([0.8734, 0.9087, 0.4828, 0.3543, 0.2375])
tensor([0.2604, 0.9087, 0.9040, 0.7244, 0.0391])
tensor(0.9087)
维度变换
x = torch.rand(4,4)
x.view(16)
x.view(8,2)
x.view(-1,8)
分别输出
tensor([0.9277, 0.9547, 0.9487, 0.9841, 0.4114, 0.1693, 0.8691, 0.3954, 0.4679,
0.7914, 0.7456, 0.0522, 0.0043, 0.2097, 0.5932, 0.9797])
tensor([[0.9277, 0.9547],
[0.9487, 0.9841],
[0.4114, 0.1693],
[0.8691, 0.3954],
[0.4679, 0.7914],
[0.7456, 0.0522],
[0.0043, 0.2097],
[0.5932, 0.9797]])
tensor([[0.9277, 0.9547, 0.9487, 0.9841, 0.4114, 0.1693, 0.8691, 0.3954],
[0.4679, 0.7914, 0.7456, 0.0522, 0.0043, 0.2097, 0.5932, 0.9797]])
注意:必须维度变换数据的数量必须保持一致
来源:https://blog.csdn.net/weixin_42263486/article/details/108272149
猜你喜欢
- python的注释方式和C语言、C++、java有所不同python语言中,使用‘#' 来进行注释,其次还有使用 三个引号来进行注释
- 偶尔写写Perl脚本,用Eclipse打开太慢,NotePad吧,色彩又太单调了,NotePad++无疑是不一个不错的选择,但当要输入中文注
- 1. 2D坐标轴1.1 绘制简单的曲线import matplotlib.pyplot as pltimport numpy as npx=
- 如果你退出 Python 解释器并重新进入,你做的任何定义(变量和方法)都会丢失。因此,如果你想要编写一些更大的程序,为准备解释器输入使用一
- 原文链接:https://vien.tech/article/157前言本文将介绍ubuntu系统下如何定时执行shell脚本、python
- 1.元字符: . 它匹配除了换行字符外的任何字符,在 alternate 模式(re.DOTALL)下它甚至可以匹配换行 ^ 匹配行首。除非
- gchart:基于google图表API的jquery组件全攻略——入门gchart是基于google图表API的jquery组件。使用gc
- 因为一个需求,因为自己想多了一点东西,最后发现了一个问题,一个很奇怪的问题。这个问题我想还是我自己当初想法上的出路导致的吧,但想不通为什么会
- 直接看例子:#!/usr/bin/python# -*- coding: utf-8 -*-from bs4 import Beautifu
- namedtuple是Python中存储数据类型,比较常见的数据类型还有有list和tuple数据类型。
- 一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除(2, 3, 5, 7等),换句话说就是该数除了1和它本身以外不再有其他的
- 列表降维(python:3.x)之前遇到需要使用列表降维的情况,如:原列表 : [[12,34],[57,86,1],[43,22,7],[
- 我们都知道Jupyter notebook更换主题后看着会很舒服,但是有个问题主题更换后工具栏不显示了。usename$ jt -lAvai
- Python的装饰器(decorator)是一个很棒的机制,也是熟练运用Python的必杀技之一。装饰器,顾名思义,就是用来装饰的,它装饰的
- 代码如下:---这是一个人事系统中的示例,要求记录一下员工的缺勤情况 ---1.要在表中记录一下缺勤计分,是对经常缺勤者的一种处
- 方式一:数据库用的是SQL 2008,数据表中存放的是图片的二进制数据,现在把图片以一种图片格式(如.jpg)导出,然后存放于指定的文件夹中
- 这个周忙的就像打仗一样,感觉有点被别人牵着鼻子走了,每天都是早出晚归,干不完的活儿,有时候感觉DBA这碗饭真的不好
- python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关
- 当大家发现数据库查询性能很慢的时候,大家都会想到加索引来优化数据库查询性能,但是面对一个复杂的SQL语句,找到一个优化的索引组合对人脑来讲,
- SQLServer数据导出到excel有很多种方法,比如dts、ssis、还可以用sql语句调用openrowset。我们这里开拓思路,用C