pytorch使用说明

本文主要介绍了PyTorch的使用,包括torch与numpy的转换、torch中的数学运算。重点讲解了Variable,它存放会变化的值,基于其计算会构建计算图以进行误差反向传递。还提到获取Variable数据需转为tensor形式,此外也提及了激活函数。

pytorch使用说明

1.torch和numpy的转换

import torch
import numpy as np

np_data = np.arange(6).reshape((2, 3))
torch_data = torch.from_numpy(np_data)
tensor2array = torch_data.numpy()

2.torch中的数学运算

# abs 绝对值计算
data = [-1, -2, 1, 2]
tensor = torch.FloatTensor(data)  # 转换成32位浮点 tensor
print(
    '\nabs',
    '\nnumpy: ', np.abs(data),          # [1 2 1 2]
    '\ntorch: ', torch.abs(tensor)      # [1 2 1 2]
)

# sin   三角函数 sin
print(
    '\nsin',
    '\nnumpy: ', np.sin(data),      # [-0.84147098 -0.90929743  0.84147098  0.90929743]
    '\ntorch: ', torch.sin(tensor)  # [-0.8415 -0.9093  0.8415  0.9093]
)

# mean  均值
print(
    '\nmean',
    '\nnumpy: ', np.mean(data),         # 0.0
    '\ntorch: ', torch.mean(tensor)     # 0.0
)

# matrix multiplication 矩阵点乘
data = [[1,2], [3,4]]
tensor = torch.FloatTensor(data)  # 转换成32位浮点 tensor
# correct method
print(
    '\nmatrix multiplication (matmul)',
    '\nnumpy: ', np.matmul(data, data),     # [[7, 10], [15, 22]]
    '\ntorch: ', torch.mm(tensor, tensor)   # [[7, 10], [15, 22]]
)

# !!!!  下面是错误的方法 !!!!
data = np.array(data)
print(
    '\nmatrix multiplication (dot)',
    '\nnumpy: ', data.dot(data),        # [[7, 10], [15, 22]] 在numpy 中可行
    '\ntorch: ', tensor.dot(tensor)     # torch 会转换成 [1,2,3,4].dot([1,2,3,4) = 30.0
)

3. 什么是Variable

在Torch中的Variable就是一个存放会变化的值的地理位置。里面的值会不停的变化。其中的值就是torch的Tensor.如果用Variable进行计算,那返回的也是一个同类型的Variable.

定义一个Variable:

import torch
from torch.autograd import Variable # torch 中 Variable 模块

# 先生鸡蛋
tensor = torch.FloatTensor([[1,2],[3,4]])
# 把鸡蛋放到篮子里, requires_grad是参不参与误差反向传播, 要不要计算梯度
variable = Variable(tensor, requires_grad=True)

print(tensor)
"""
 1  2
 3  4
[torch.FloatTensor of size 2x2]
"""

print(variable)
"""
Variable containing:
 1  2
 3  4
[torch.FloatTensor of size 2x2]
"""
对比一下tensor的计算和variable的计算
t_out = torch.mean(tensor*tensor)       # x^2
v_out = torch.mean(variable*variable)   # x^2
print(t_out)
print(v_out)    # 7.5

时刻计住,Variable计算是,它在背景幕布后面一步步默默搭建着一个庞大的系统,叫做计算图,computational graph.这个图将所有的计算步骤(节点)都连接起来,最后进行误差反向传递的时候一次性将所有variable里面的修改幅度(梯度)都计算出来,而tensor就没有这个能力。

获取Variable里面的数据

直接print(variable)只会输出Variable形式的数据,在很多时候是用不了的(画图), 所以我们要将其变成tensor形式。

print(variable)     #  Variable 形式
"""
Variable containing:
 1  2
 3  4
[torch.FloatTensor of size 2x2]
"""
print(variable.data)    # tensor 形式
"""
 1  2
 3  4
[torch.FloatTensor of size 2x2]
"""
print(variable.data.numpy())    # numpy 形式
"""
[[ 1.  2.]
 [ 3.  4.]]
"""

4.激活函数

import torch
import numpy as np
import torch
import torch.nn.functional as F     # 激励函数都在这
from torch.autograd import Variable

# 做一些假数据来观看图像
x = torch.linspace(-5, 5, 200)  # x data (tensor), shape=(100, 1)
x = Variable(x)
x_np = x.data.numpy()   # 换成 numpy array, 出图时用

# 几种常用的 激励函数
y_relu = F.relu(x).data.numpy()
y_sigmoid = F.sigmoid(x).data.numpy()
y_tanh = F.tanh(x).data.numpy()
y_softplus = F.softplus(x).data.numpy()
# y_softmax = F.softmax(x)  softmax 比较特殊, 不能直接显示, 不过他是关于概率的, 用于分类

if __name__ == '__main__':
    import matplotlib.pyplot as plt  # python 的可视化模块, 我有教程             (https://morvanzhou.github.io/tutorials/data-manipulation/plt/)

    plt.figure(1, figsize=(8, 6))
    plt.subplot(221)
    plt.plot(x_np, y_relu, c='red', label='relu')
    plt.ylim((-1, 5))
    plt.legend(loc='best')

    plt.subplot(222)
    plt.plot(x_np, y_sigmoid, c='red', label='sigmoid')
    plt.ylim((-0.2, 1.2))
    plt.legend(loc='best')

    plt.subplot(223)
    plt.plot(x_np, y_tanh, c='red', label='tanh')
    plt.ylim((-1.2, 1.2))
    plt.legend(loc='best')

    plt.subplot(224)
    plt.plot(x_np, y_softplus, c='red', label='softplus')
    plt.ylim((-0.2, 6))
    plt.legend(loc='best')

    plt.show()

转载于:https://www.cnblogs.com/o-v-o/p/10946130.html

### 如何在 Conda 环境下安装和使用 PyTorch #### 创建新的 Conda 虚拟环境 为了保持项目的独立性和整洁性,在开始之前建议先创建一个新的 Conda 虚拟环境: ```bash conda create --name my_pytorch_env python=3.9 ``` 激活新创建的虚拟环境: ```bash conda activate my_pytorch_env ``` #### 安装 PyTorch 及其依赖库 对于特定版本的需求,可以根据实际情况调整命令参数。这里以 PyTorch 1.7 和 CUDA 11.0 版本为例来说明如何通过 Conda 进行安装[^1]。 如果遇到 `torchvision` 的具体版本号(如 0.5.0)无法被识别的情况,则可以选择忽略该部分版本约束,并在后续单独安装最新版或其他所需版本的 `torchvision` 。此时应使用的命令如下所示: ```bash conda install pytorch cudatoolkit=11.0 -c pytorch ``` 完成上述操作后,可以在同一虚拟环境中利用 pip 来补充缺失的部分: ```bash pip install torchvision ``` 另一种方法是直接采用官方推荐的方式一次性安装多个组件,这通常适用于较新的组合配置。例如,针对 PyTorch 1.13.1 和 CUDA 11.7 组合,可以执行下面这条综合性的安装语句[^3]: ```bash conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia ``` #### 验证安装成功与否 一旦所有必要的软件包都已正确安装,可以通过 Python 解释器简单测试一下是否能够正常导入这些模块: ```python import torch print(torch.__version__) print(torch.cuda.is_available()) ``` 这段代码会打印出当前所用 PyTorch 的版本以及是否有可用的 GPU 加速支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值