pytorch使用GPU訓練MNIST資料集

2021-09-11 07:06:02 字數 2762 閱讀 8616

參考莫凡部落格進行mnist資料集的訓練,臨時記錄所使用的**。

import torch

import torch.nn as nn

import torch.utils.data as data

import torchvision

import matplotlib.pyplot as plt

torch.manual_seed(1)

epoch =

1batch_size =

50lr =

0.001

download_mnist =

true

train_data = torchvision.datasets.mnist(

root=

'./mnist'

, train=

true

, transform=torchvision.transforms.totensor(),

download=download_mnist,

)test_data = torchvision.datasets.mnist(root=

'./mnist'

, train=

false

)# 批處理

train_loader = data.dataloader(dataset=train_data, batch_size=batch_size, shuffle=

true

)# 測試

test_x = torch.unsqueeze(test_data.test_data, dim=1)

.type

(torch.floattensor)[:

2000]/

255test_y = test_data.test_labels[

:2000

]test_x = test_x.cuda(

)test_y = test_y.cuda(

)# 卷積(conv2d) -> 激勵函式(relu) -> 池化, 向下取樣 (maxpooling) ->

# 再來一遍 -> 展平多維的卷積成的特徵圖 -> 接入全連線層 (linear) -> 輸出

class

cnn(nn.module)

:def

__init__

(self)

:super

(cnn, self)

.__init__(

) self.conv1 = nn.sequential(

# 1x28x28

nn.conv2d(

in_channels=1,

out_channels=16,

kernel_size=5,

stride=1,

padding=2,

),# 16x28x28

nn.relu(),

nn.maxpool2d(kernel_size=2)

) self.conv2 = nn.sequential(

# 16x14x14

nn.conv2d(16,

32,5,

1,2)

,# 32x14x14

nn.relu(),

nn.maxpool2d(2)

,# 32x7x7

) self.out = nn.linear(32*

7*7,

10)defforward

(self, x)

: x = self.conv1(x)

x = self.conv2(x)

x = x.view(x.size(0)

,-1)

# 展平多維的卷積圖成 (batch_size, 32 * 7 * 7)\

output = self.out(x)

return output

cnn = cnn(

)cnn = cnn.cuda(

)print

(cnn)

optimizer = torch.optim.adam(cnn.parameters(

), lr=lr)

loss_func = nn.crossentropyloss(

)for epoch in

range

(epoch)

:for step,

(b_x, b_y)

inenumerate

(train_loader)

: output = cnn(b_x.cuda())

loss = loss_func(output, b_y.cuda())

optimizer.zero_grad(

) loss.backward(

) optimizer.step(

)test_output = cnn(test_x[:10

])pred_y = torch.

max(test_output,1)

[1].data.cpu(

).numpy(

).squeeze(

)print

(pred_y,

'prediction number'

)print

(test_y[:10

].cpu(

).numpy(),

'real number'

)

Pytorch中多GPU訓練

參考 在資料越來越多的時代,隨著模型規模引數的增多,以及資料量的不斷提公升,使用多gpu去訓練是不可避免的事情。pytorch在0.4.0及以後的版本中已經提供了多gpu訓練的方式,本文簡單講解下使用pytorch多gpu訓練的方式以及一些注意的地方。這裡我們談論的是單主機多gpus訓練,與分布式訓...

pytorch 多GPU訓練注意事項

1.多gpu訓練記得dataloader dataset dataset train,batch size config train batch shuffle config train shuffle num workers config train workers drop last true ...

使用指定GPU跑Pytorch

有如下兩種方法來指定需要使用的gpu。類似tensorflow指定gpu的方式,使用cuda visible devices。1.1 直接終端中設定 cuda visible devices 1 python my script.py 1.2 python 中設定 import os os.envi...