10from typing import List
11
12import torch.nn as nn
13
14from labml import lab
15from labml.configs import option
16from labml_helpers.datasets.cifar10 import CIFAR10Configs as CIFAR10DatasetConfigs
17from labml_helpers.module import Module
18from labml_nn.experiments.mnist import MNISTConfigs
21class CIFAR10Configs(CIFAR10DatasetConfigs, MNISTConfigs):
පෙරනිමියෙන්CIFAR10 දත්ත කට්ටලය භාවිතා කරන්න
30 dataset_name: str = 'CIFAR10'
33@option(CIFAR10Configs.train_dataset)
34def cifar10_train_augmented():
38 from torchvision.datasets import CIFAR10
39 from torchvision.transforms import transforms
40 return CIFAR10(str(lab.get_data_path()),
41 train=True,
42 download=True,
43 transform=transforms.Compose([
පෑඩ්සහ බෝග
45 transforms.RandomCrop(32, padding=4),
අහඹුතිරස් පෙරළීම
47 transforms.RandomHorizontalFlip(),
49 transforms.ToTensor(),
50 transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
51 ]))
54@option(CIFAR10Configs.valid_dataset)
55def cifar10_valid_no_augment():
59 from torchvision.datasets import CIFAR10
60 from torchvision.transforms import transforms
61 return CIFAR10(str(lab.get_data_path()),
62 train=False,
63 download=True,
64 transform=transforms.Compose([
65 transforms.ToTensor(),
66 transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
67 ]))
70class CIFAR10VGGModel(Module):
සම්මුතියසහ සක්රිය කිරීම ඒකාබද්ධ
75 def conv_block(self, in_channels, out_channels) -> nn.Module:
79 return nn.Sequential(
80 nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1),
81 nn.ReLU(inplace=True),
82 )
84 def __init__(self, blocks: List[List[int]]):
85 super().__init__()
තටාක ස්ථර 5 ක් ප්රමාණයේ ප්රතිදානයක් නිපදවනු ඇත . CIFAR 10 රූප ප්රමාණය
89 assert len(blocks) == 5
90 layers = []
RGBනාලිකා
92 in_channels = 3
එක්එක් කොටසෙහි එක් එක් ස්ථරයේ නාලිකා ගණන
94 for block in blocks:
සම්මුතිය, සාමාන්යකරණය සහ සක්රිය කිරීමේ ස්ථර
96 for channels in block:
97 layers += self.conv_block(in_channels, channels)
98 in_channels = channels
එක්එක් කොටස අවසානයේ මැක්ස් තටාක
100 layers += [nn.MaxPool2d(kernel_size=2, stride=2)]
ස්ථරසමඟ අනුක්රමික ආකෘතියක් සාදන්න
103 self.layers = nn.Sequential(*layers)
අවසන්පිවිසුම් ස්ථරය
105 self.fc = nn.Linear(in_channels, 10)
107 def forward(self, x):
VGGස්ථර
109 x = self.layers(x)
වර්ගීකරණස්ථරය සඳහා නැවත සකස් කරන්න
111 x = x.view(x.shape[0], -1)
අවසානරේඛීය ස්ථරය
113 return self.fc(x)