pytorch入门(一)简介pytorch

pytorch入门(一)简介pytorch

  • 什么是pytorch
    • TensorFlow和PyTorch
    • Keras
  • 书中惯例
  • 补充材料
  • 第一章-Getting Started with PyTorch
    • 硬件
      • GPU
      • CPU
      • RAM
      • Storage
    • Deep Learning in Cloud
      • 谷歌
      • 亚马逊
    • 配置环境
    • 打开jupyter
    • Tensor
      • 张量运算
      • Tensor Broadcasting

在读《 Programing PyTorch for Deep Learning》 提取码:pypt时做的一些笔记。

什么是pytorch

pytorch时facebook提供的一个基于python的深度学习开源框架。其有两个来源,其一是Torch,Torch最早是基于2002年的一个基于Lua的神经网络库。另一个来源是2015年日本创建的Chainer。Chainer是最早提供动态图计算的神经网络库之一。

TensorFlow和PyTorch

(这本书是19年的,应该会有一些不同,如有不同望留言指出,感谢)
在使用TensorFlow时,先建立神经网络结构的图形表示然后再在该图形上执行操作。TensorFlow使用静态图(2.0版本之前)。
在TensorFlow2.0版本之后添加了 eager execution,使得其工作原理和PyTorch相似。

Keras

Keras最初支持TeaNo和TensorFlow现在还支持MXNet。其目前为TensorFlow的一个单独部分(tf.keras)。

书中惯例

  • 斜体:术语、UTL、电子邮件地址、文件名和文件扩展名。

  • 等宽:用于程序列表,以及在段落中引用程序元素,如变量或函数名、数据库、数据类型、环境变量、语句和关键字。

  • 等宽加粗:显示用户应按字面意思键入的命令或其他文本。

  • 等宽斜体:显示应替换为用户提供的值或由上下文确定的值的文本。

补充材料

(包括代码示例和练习)可在以下网址下载:https://github.com/falloutdurham/beginners-pytorch-deep-learning。

在这里插入图片描述

第一章-Getting Started with PyTorch

书中建议使用云资源(如果没有相应资源不要配置):Amazon Web Services, Google Cloud, or Microsoft Azure。

硬件

GPU

深度学习box的核心,(书中说到由于挖矿gpu涨价、然后这种情况似乎在消退(其实没有))。书中建议使用 NVIDIA GeForce RTX 2080 Ti(我实验室也是这种)。

CPU

书中推荐Z370系列。也提到了CPU不行话可能也会成为深度学习的瓶颈。

RAM

建议至少64GB DDR4的主存

Storage

建议4TB 用于储存不活跃的数据。

Deep Learning in Cloud

如果刚开始学习DL不建议使用云端的Tesla V100 。可以使用更便宜(甚至免费)的K-80。并且使用云端更容易配置。

谷歌

Colaboratory(或Colab)是一个基本免费、零安装要求的定制Jupyter笔记本环境。只需要一个谷歌账号即可。

亚马逊

在AWS上创建深度学习box步骤:

  1. 登录AWS控制台。
  2. 选择 EC2并启动。
  3. 搜索并选择Deep Learning AMI (Ubuntu) 选项。
  4. 选择p2.xlarge作为实例类型。
  5. 通过创建新的密钥或者重用密钥启动实例。
  6. 使用SSH连接到实例,并将本地计算机上的端口8888重定向到实例:
    ssh -L localhost:8888:localhost:8888\
    -i your .pem filename ubuntu@your instance DNS
  7. 通过输入Jupyter笔记本启动Jupyter笔记本。复制生成的URL并将其粘贴到浏览器中以访问Jupyter。

配置环境

需要下载anaconda和对应版本的CUDA。详情自行搜索(因为实验室安装好了anaconda和CUDA)。
打开anaconda prompt。

conda create -n py37pt11 python=3.7 # 安装python环境
conda activate py37pt11  # 激活环境
pip install --upgrade pip  # 更新pip
conda install pytorch==1.1.0 torchvision==0.3.0 cudatoolkit=10.0   # 安装pytorch1.1

不同版本pytorch可查看这里。
安装后在python查看是否安装成功。
在这里插入图片描述

打开jupyter

打开anaconda prompt

pip install jupyter notebook

参考这里对服务器进行配置
输入

jupyter notebook --ip=0.0.0.0

在浏览器上输入ip:8888(也可以是自定义端口,但需要注意有些浏览器中默认奇怪的端口无法访问)
在这里插入图片描述
在图中选中红框创建。
pytorch入门(一)简介pytorch_第1张图片
输入

import torch
print(torch.cuda.is_available())
print(torch.rand(2,2))

pytorch入门(一)简介pytorch_第2张图片

Tensor

Tensor既是数字的容器也是定义成新张量之间张量转换的一组规则。每个Tensor都有一个对应其维空间的rank(阶)。指的是Tensor的基底数。从下图就可以比较形象的感受。
pytorch入门(一)简介pytorch_第3张图片
pytorch入门(一)简介pytorch_第4张图片
这里我们创建一个二阶Tensor

x = torch.tensor([[0,0,1],[1,1,1],[0,0,0]])

pytorch入门(一)简介pytorch_第5张图片

  • 可以利用python的索引更改张量元素。
x[0][0] = 5

pytorch入门(一)简介pytorch_第6张图片

  • 可以使用torch.zeros()和torch.ones()创建全为0和1的张量。
  • 张量同样可以进行数学运算。
torch.ones(1,2) + torch.ones(1,2)
torch.zeros(2,2)

pytorch入门(一)简介pytorch_第7张图片

  • 对于0阶张量可以利用item()进行值的提取。
print(torch.tensor(1),torch.tensor(1).item())

在这里插入图片描述

  • 张量可以储存于CPU和GPU,利用to()进行设备之间的复制。
cpu_t = torch.rand(2,2)
print(cpu_t.device)
gpu_t = cpu_t.to("cuda")
print(gpu_t.device)

pytorch入门(一)简介pytorch_第8张图片

张量运算

这里介绍一部分运算。

  1. max()和argmax()

在这里插入图片描述

  1. 更改张量类型
long_t = torch.tensor([2,3])
print("long_t type is {}".format(long_t.type()))
float_t = long_t.to(dtype=torch.float32)
print("float_t type is {}".format(float_t.type()))

pytorch入门(一)简介pytorch_第9张图片
3. tensor.function_()
很多对tensor的操作会让电脑重新开辟出一个空间用于储存张量,为了节省空间可以在原funciton下加一个"_"
pytorch入门(一)简介pytorch_第10张图片
4. 更改张量形状(reshape)
比如MINST数据集是2828格式,再输入神经网络时需要128*28的格式。
可以使用view()或者reshape()。
pytorch入门(一)简介pytorch_第11张图片
书中作者推荐使用reshape(),因为view()在原数据发生变化时也会变化,或者当数据不连续时会报错,这里的数据不连续指的是数据储存不连续。
如果详细了解可以看这里

  1. 重新排列tensor维度
    比如一张图片被储存维[高度,宽度,通道]的张量,要将其换成[通道,高度,宽度]可以使用permute()进行操作
hwc_t = torch.rand(648,480,3)
chw_t = hwc_t.permute(2,0,1)
print(hwc_t.shape,chw_t.shape)

pytorch入门(一)简介pytorch_第12张图片

Tensor Broadcasting

对于张量维度不同时并且要进行运算时可以进行如下操作。
pytorch入门(一)简介pytorch_第13张图片

你可能感兴趣的:(pytorch,深度学习)