1. 安装pytorch https://blog.csdn.net/maidabu/article/details/81606536
我电脑配置:linux4.4.0-142-generic, gcc4.8.4, ubuntu14.04.1; 安了geforce GTX970,驱动430.14, cuda8.0.61(与nvidai-smi获得的cuda version 10.2不一致,why?), cudnn6.0.21;装了anaconda,配置了环境python27==python2.7,并设置pip清华源,pip install numpy,scipy...
在1.2 pytorch环境搭建这一节中看到:在1.2版本以后,pytorch只支持cuda 9.2以上了,所以需要对cuda进行升级,目前测试大部分显卡都可以用。但是,我想将我的cuda版本升级,https://blog.csdn.net/zywvvd/article/details/100121899 与 https://blog.csdn.net/dudu815110/article/details/87167518 发现最新版pytorch1.3需要cuda9.2,或10.1,但cuda9 cuda9.2 不支持ubuntu14.04,cuda 10支持14.04.5, 所以我需要重装系统到16.04.5,再安装驱动、cuda10、对应的cudnn等之后的环境配置一系列操作,这样理解对吗?比较麻烦,我就先安装pytorch 0.4版本学习初步的知识。
以下操作在环境python27中进行。
1.1 更新pip
到pip官网https://pip.pypa.io/en/stable/installing/ 按照步骤:
>> curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
>> python get-pip.py
1.2 安装pytorch
直接从链接http://download.pytorch.org/whl/cu80/torch-0.4.1-cp27-cp27mu-linux_x86_64.whl上下载
然后执行 sudo pip install torch-0.4.1-cp27-cp27mu-linux_x86_64.whl
报错:sudo: pip: command not found 参考https://www.cnblogs.com/zhongyehai/p/10683560.html
>> vi ~/.bashrc
添加内容:alias sudo='sudo env PATH=$PATH'
>> source ~/.bashrc
再执行sudo pip install torch-0.4.1-cp27-cp27mu-linux_x86_64.whl,成功安装。
1.3 安装torchvision
sudo pip install torchvision
1.4 测试,打开python https://blog.csdn.net/weixin_40393064/article/details/78378300
>> import torch
>> import torchvision
没有报错即可。
但按照handle book1.2中的验证:
>>import torch
>>torch.__version__
'1.3.1',这是因为我在安装torchvision时,系统根据torchvision的版本自动卸载并安装了匹配的pytorch版本。不是说cuda版本不支持了1.3以上吗,why?
2. 张量tensors
tensors与Numpy中的ndarrays类似,但pytorch中tensors可用GPU计算。
from __future__ import print_function
import torch
2.1创建张量
(1)创建5*3矩阵,不初始化/随机初始化/0填充:
x = torch.empty/rand/zeros(5, 3)
(2)用现有数据[5.5,3]初始化
x = torch.tensor([5.5, 3])
(3)根据现有的张量创建张量。 这些方法将重用输入张量的属性,例如, dtype,除非设置新的值进行覆盖
x = x.new_ones(5, 3, dtype=torch.double)
x = torch.randn_like(x, dtype=torch.float) # 覆盖 dtype! # 对象的size 是相同的,只是值和类型发生了变化
(4)使用size方法与Numpy的shape属性返回的相同,张量也支持shape属性
print(x.size()) # torch.Size([5, 3]),``torch.Size`` 返回值是 tuple类型, 所以它支持tuple类型的所有操作.
2.2 操作
以加法为例
(1)
y = torch.rand(5, 3)
print(x + y)
(2)
print(torch.add(x, y))
(3)
result = torch.empty(5, 3)
torch.add(x, y, out=result)
(4)
# adds x to y
y.add_(x) #任何 以``_`` 结尾的操作都会用结果替换原变量. 例如: ``x.copy_(y)``, ``x.t_()``, 都会改变 ``x``.
2.3 索引
使用与NumPy索引方式相同的操作来进行对张量的操作
print(x[:, 1])#输出x第2列元素
2.4 torch.view
: 可以改变张量的维度和大小
与Numpy的reshape类似
x = torch.randn(4, 4)
y = x.view(16)
z = x.view(-1, 8) # size -1 从其他维度推断,4*4/8=2
print(x.size(), y.size(), z.size())
#torch.Size([4, 4]) torch.Size([16]) torch.Size([2, 8])
2.5 一个元素的张量,使用.item()
来得到Python数据类型的数值
x = torch.randn(1)
print(x) #x = torch.randn(1)
print(x)
print(x.item())
print(x.item())
没有保存
很生气了
为什么点击undo会把我所有新编辑的东西都去掉,这个编辑器有问题。不想用了。。。