楼主: Nicolle
487 31

[GITHUB]Mastering PyTorch for Deep Learning [推广有奖]

版主

巨擘

0%

还不是VIP/贵宾

-

TA的文库  其他...

Python Programming

SAS Programming

Structural Equation Modeling

威望
15
论坛币
12210626 个
学术水平
2704 点
热心指数
2591 点
信用等级
2510 点
经验
414261 点
帖子
16928
精华
73
在线时间
6404 小时
注册时间
2005-4-23
最后登录
2018-4-23

Nicolle 学生认证  发表于 2018-4-15 02:47:25 |显示全部楼层

本帖隐藏的内容

Mastering-PyTorch-for-Deep-Learning-master.zip (210.85 KB)



已有 1 人评分经验 收起 理由
zl89 + 80 精彩帖子

总评分: 经验 + 80   查看全部评分

本帖被以下文库推荐

stata SPSS
Nicolle 学生认证  发表于 2018-4-15 02:48:58 |显示全部楼层
  1. # Import libs
  2. from __future__ import print_function

  3. import torch
  4. import torch.nn as nn
  5. import torch.optim as optim
  6. from torch.autograd import Variable
  7. import torch.nn.functional as F
  8. from torch.utils.data import Dataset, DataLoader

  9. import random
  10. import time
复制代码
回复

使用道具 举报

Nicolle 学生认证  发表于 2018-4-15 02:49:39 |显示全部楼层
  1. # Sequential API example
  2. # Create model
  3. model = nn.Sequential(
  4.     nn.Linear(in_features, hidden),
  5.     nn.ReLU(),
  6.     nn.Linear(hidden, out_features)
  7. )
  8. print(model)
复制代码
回复

使用道具 举报

Nicolle 学生认证  发表于 2018-4-15 02:49:57 |显示全部楼层
  1. # Create dummy input
  2. x = Variable(torch.randn(batch_size, in_features))
  3. # Run forward pass
  4. output = model(x)
  5. print(output)
复制代码
回复

使用道具 举报

Nicolle 学生认证  发表于 2018-4-15 02:50:32 |显示全部楼层
  1. # Functional API example
  2. # Create model
  3. class CustomNet(nn.Module):
  4.     def __init__(self, in_features, hidden, out_features):
  5.         """
  6.         Create three linear layers
  7.         """
  8.         super(CustomNet, self).__init__()
  9.         self.linear1 = nn.Linear(in_features, hidden)
  10.         self.linear2 = nn.Linear(hidden, hidden)
  11.         self.linear3 = nn.Linear(hidden, out_features)

  12.     def forward(self, x):
  13.         """
  14.         Draw a random number from [0, 10].
  15.         If it's 0, skip the second layer. Otherwise loop it!
  16.         """
  17.         x = F.relu(self.linear1(x))
  18.         while random.randint(0, 10) != 0:
  19.         #while x.norm() > 2:
  20.             print('2nd layer used')
  21.             x = F.relu(self.linear2(x))
  22.         x = self.linear3(x)
  23.         return x

  24. custom_model = CustomNet(in_features, hidden, out_features)
  25. print(custom_model)
复制代码
回复

使用道具 举报

Nicolle 学生认证  发表于 2018-4-15 02:51:05 |显示全部楼层
  1. # Debug example
  2. # Create Convnet
  3. class ConvNet(nn.Module):
  4.     def __init__(self, in_channels, hidden, out_features):
  5.         """
  6.         Create ConvNet with two parallel convolutions
  7.         """
  8.         super(ConvNet, self).__init__()
  9.         self.conv1_1 = nn.Conv2d(in_channels=in_channels,
  10.                                  out_channels=10,
  11.                                  kernel_size=3,
  12.                                  padding=1)
  13.         self.conv1_2 = nn.Conv2d(in_channels=in_channels,
  14.                                  out_channels=10,
  15.                                  kernel_size=3,
  16.                                  padding=1)
  17.         self.conv2 = nn.Conv2d(in_channels=20,
  18.                                out_channels=1,
  19.                                kernel_size=3,
  20.                                padding=1)
  21.         self.linear1 = nn.Linear(hidden, out_features)

  22.     def forward(self, x):
  23.         """
  24.         Pass input through both ConvLayers and stack them afterwards
  25.         """
  26.         x1 = F.relu(self.conv1_1(x))
  27.         x2 = F.relu(self.conv1_2(x))
  28.         x = torch.cat((x1, x2), dim=1)
  29.         x = self.conv2(x)
  30.         print('x size (after conv2): {}'.format(x.shape))
  31.         x = x.view(x.size(0), -1)
  32.         x = self.linear1(x)
  33.         return x
  34.    
  35. conv_model = ConvNet(in_channels=3, hidden=576, out_features=out_features)
  36. # Create dummy input
  37. x_conv = Variable(torch.randn(batch_size, 3, 24, 24))
复制代码
回复

使用道具 举报

Nicolle 学生认证  发表于 2018-4-15 02:51:44 |显示全部楼层
  1. ## Dataset / DataLoader example
  2. # Create a random Dataset
  3. class RandomDataset(Dataset):
  4.     def __init__(self, nb_samples, consume_time=False):
  5.         self.data = torch.randn(nb_samples, in_features)
  6.         self.target = torch.randn(nb_samples, out_features)
  7.         self.consume_time=consume_time

  8.     def __getitem__(self, index):
  9.         x = self.data[index]
  10.         y = self.target[index]

  11.         # Transform data
  12.         x = x + torch.FloatTensor(x.shape).normal_() * 1e-2
  13.         
  14.         if self.consume_time:
  15.             # Do some time consuming operation
  16.             for i in xrange(5000000):
  17.                 j = i + 1

  18.         return x, y

  19.     def __len__(self):
  20.         return len(self.data)
复制代码
回复

使用道具 举报

Nicolle 学生认证  发表于 2018-4-15 02:52:05 |显示全部楼层
  1. # Training loop
  2. criterion = nn.MSELoss()
  3. optimizer = optim.Adam(model.parameters(), lr=1e-2)
  4. def train(loader):
  5.     for batch_idx, (data, target) in enumerate(loader):
  6.         # Wrap data and target into a Variable
  7.         data, target = Variable(data), Variable(target)

  8.         # Clear gradients
  9.         optimizer.zero_grad()

  10.         # Forward pass
  11.         output = model(data)

  12.         # Calculate loss
  13.         loss = criterion(output, target)

  14.         # Backward pass
  15.         loss.backward()

  16.         # Weight update
  17.         optimizer.step()

  18.         print('Batch {}\tLoss {}'.format(batch_idx, loss.data.numpy()[0]))
复制代码
回复

使用道具 举报

Nicolle 学生认证  发表于 2018-4-15 02:52:27 |显示全部楼层
  1. # Create Dataset
  2. data = RandomDataset(nb_samples=30)
  3. # Create DataLoader
  4. loader = DataLoader(dataset=data,
  5.                     batch_size=batch_size,
  6.                     num_workers=0,
  7.                     shuffle=True)
复制代码
回复

使用道具 举报

Nicolle 学生认证  发表于 2018-4-15 02:52:52 |显示全部楼层
  1. # Start training
  2. t0 = time.time()
  3. train(loader)
  4. time_fast = time.time() - t0
  5. print('Training finished in {:.2f} seconds'.format(time_fast))
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

GMT+8, 2018-4-24 07:13