来源 | OpenCV学堂
作者 | gloomyfish
基本思路选择
以前我用过Caffe,用过tensorflow,最近一直在用pytorch感觉特别好用。所以打算写点我学习的过程跟经验,如果你是一个pytorch的高手自然可以忽略,如果你也打算学习pytorch框架,那就跟我一起学习吧,所谓独学而无友,孤陋而寡闻!
pytorch安装
01
演示系统环境
- Windows10
- Pytorch1.4
- CUDA10.0
- VS2015
- Python3.6.5
CPU版本
install pytorch torchvision cpuonly -c pytorch
GPU版本
install pytorch torchvision cudatoolkit=10.0 -c pytorch
测试安装是否正常, CUDA支持正常
测试结果一切正常!
安装的时候你还可以更直接点
pip install pytorch torchvision
就好啦!我知道很多人喜欢用各种python的工具跟IDE做开发,那些都是个人爱好,喜欢就好,但是千万别强迫别人跟你一样!有IDE强迫症!我从开始学习python就一直用pycharm!千万别问我好用不好用,方便不方便!觉得适合自己即可。
Pytorch基本语法演示
02
演示了pytorch中基本常量、变量、矩阵操作、CUDA调用,numpy与tensor转化,维度转化,自动梯度等基本知识。代码如下:
from __future__ import print_function import torch import numpy as np print(torch.__version__) # 定义矩阵 x = torch.empty(2, 2) print(x) # 定义随机初始化矩阵 x = torch.randn(2, 2) print(x) # 定义初始化为零 x = torch.zeros(3, 3) print(x) # 定义数据为tensor x = torch.tensor([5.1, 2., 3., 1.]) print(x) # 操作 a = torch.tensor([1.,2.,3.,4.,5.,6.,7.,8.]) b = torch.tensor([11.,12.,13.,14.,15.,16.,17.,18.]) c = a.add(b) print(c) # 维度变换 2x4 a = a.view(-1, 4) b = b.view(-1, 4) c = torch.add(a, b) print(c, a.size(), b.size()) # torch to numpy and visa na = a.numpy() nb = b.numpy() print("\na =",na,"\nb =", nb) # 操作 d = np.array([21.,22.,23.,24.,25.,26.,27.,28.], dtype=np.float32) print(d.reshape(2, 4)) d = torch.from_numpy(d.reshape(2, 4)) sum = torch.sub(c, d) print(sum, "\n sum = ", sum.size()) # using CUDA if torch.cuda.is_available(): result = d.cuda() + c.cuda() print("\n result = ", result) # 自动梯度 x = torch.randn(1, 5, requires_grad=True) y = torch.randn(5, 3, requires_grad=True) z = torch.randn(3, 1, requires_grad=True) print("\nx=",x, "\ny=",y, "\nz=",z) xy = torch.matmul(x, y) xyz = torch.matmul(xy, z) xyz.backward() print(x.grad, y.grad, z.grad)
运行输出结果:
1.4.0
tensor([[0., 0.],
[0., 0.]])
tensor([[-0.4624, -1.1495],
[ 1.9408, -0.1796]])
tensor([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
tensor([5.1000, 2.0000, 3.0000, 1.0000])
tensor([12., 14., 16., 18., 20., 22., 24., 26.])
tensor([[12., 14., 16., 18.],
[20., 22., 24., 26.]]) torch.Size([2, 4]) torch.Size([2, 4])a = [[1. 2. 3. 4.]
[5. 6. 7. 8.]]
b = [[11. 12. 13. 14.]
[15. 16. 17. 18.]]
[[21. 22. 23. 24.]
[25. 26. 27. 28.]]
tensor([[-9., -8., -7., -6.],
[-5., -4., -3., -2.]])
sum = torch.Size([2, 4])result = tensor([[33., 36., 39., 42.],
[45., 48., 51., 54.]], device='cuda:0')x= tensor([[ 0.3029, -0.4030, -0.9148, -0.9237, 0.7549]], requires_grad=True)
y= tensor([[-0.9032, -0.4092, -0.0682],
[ 0.3689, -0.9655, -0.1346],
[ 1.5101, 1.4418, 0.1058],
[ 1.0259, -1.6011, 0.4881],
[-0.3989, 0.9156, -1.6290]], requires_grad=True)
z= tensor([[ 1.4343],
[ 2.2974],
[-0.0864]], requires_grad=True)
tensor([[-2.2298, -1.6776, 5.4691, -2.2492, 1.6721]]) tensor([[ 0.4344, 0.6959, -0.0262],
[-0.5781, -0.9260, 0.0348],
[-1.3121, -2.1017, 0.0790],
[-1.3249, -2.1222, 0.0798],
[ 1.0827, 1.7342, -0.0652]]) tensor([[-3.0524],
[ 1.1164],
[-1.7437]])
总结
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】