PyTorch Conv3d определяется как трехмерная свертка, которая применяется к входному сигналу, собранному из некоторых входных плоскостей.
Синтаксис:
torch.nn.Conv3d(in_channels, out_channels, Kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', devices=None, dtype=None)
Параметры:
- in_channels используется как количество каналов во входном изображении.
- out_channels используется как количество каналов, создаваемых сверткой.
- Kernel_size используется для определения размера сверточного ядра.
- шаг используется для управления шагом для взаимной корреляции и одного числа или кортежа из одного элемента.
- stride используется для управления количеством заполнения, применяемого к входным данным. Это может быть либо строка, либо кортеж с неявным заполнением. Значение заполнения по умолчанию — 0.
- dilation используется для управления расстоянием между элементами ядра, а значение расширения по умолчанию равно 1.
- groups используются для управления соединением между входами и выходами. Значение групп по умолчанию — 1.
- bias: значение смещения по умолчанию — True. Если это правда, это добавляет обучаемую предвзятость к выходным данным. Если оно ложно, это не добавляет к выходным данным никакой обучаемой предвзятости.
- Пример
- Функционал
- Заполнение
- Группа
- Расширение
- Смещение
- PyTorch Conv3d в CNN
- Транспонирование
- Параметры
- Вес
- Input_channels и output_channels
Пример
PyTorch Conv3d — это простая арифметическая операция, внутри которой мы перемещаем матрицу или ядро весов над трехмерными данными и выполняем поэлементное умножение данных.
Код:
В следующем коде мы импортируем все необходимые библиотеки, такие как import torch, import torch.nn как nn.
- c = nn.Conv3d(18, 35, 5, stride=2): здесь мы объявляем переменную, используя квадратные ядра и равный шаг.
- input = torch.randn(22, 18, 12, 52, 102) используется для описания входной переменной с помощью функции torch.randn().
- print(output) используется для печати вывода с помощью функции print().
# Importing libraries import torch import torch.nn as nn # Declaring the variable by using square kernels and equal stride c = nn.Conv3d(18, 35, 5, stride=2) # Describing the input and output variables input = torch.randn(22, 18, 12, 52, 102) output = c(input) # Print output print(output)
Выход:
После запуска приведенного выше кода мы получаем следующий вывод, в котором видим, что значения PyTorch Conv3d печатаются на экране.
Функционал
Функционал PyTorch Conv3d применяет трехмерную свертку к входному изображению, собранному из некоторых входных плоскостей.
Синтаксис:
torch.nn.functional.conv3d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1)
Параметры:
- input: ввод определяется как входной тензор формы(мини-пакет, in_channels).
- weight: Вес определяется как фильтр формы(out_channels).
- bias: смещение определяется как необязательный тензор смещения формы(out_channels). Значение смещения по умолчанию — Нет.
- stride: Шаг свертывающегося ядра. Значение шага по умолчанию — 1.
- padding используется для управления количеством заполнения, применяемого к входным данным. Это может быть либо строка, либо кортеж с неявным заполнением. Значение заполнения по умолчанию — 0.
- dilation используется для управления расстоянием между элементами ядра, а значение расширения по умолчанию равно 1.
- groups используются для управления соединением между входами и выходами. Значение групп по умолчанию — 1.
Пример:
В следующем коде сначала мы импортируем все необходимые библиотеки, такие как import torch, import torch.nn.functional как функцию.
- filter = torch.randn(35, 18, 5, 5, 5): Здесь мы описываем переменную с помощью функции torch.randn().
- f=function.conv3d(input, filter) используется для описания функции function.conv3d().
- print(f) используется для печати вывода с помощью функции print().
# Importing Libraries import torch import torch.nn.functional as function # Describing the variable by using torch.randn() function filter = torch.randn(35, 18, 5, 5, 5) input = torch.randn(22, 18, 52, 12, 22) # Using conv3d() function f=function.conv3d(input, filter) # print output print(f)
После запуска приведенного выше кода мы получаем следующий вывод, в котором видим, что функциональные значения Conv3d PyTorch печатаются на экране.
Заполнение
Заполнение PyTorch Cpnv3d используется для управления количеством заполнения, применяемого к входным данным. Это может быть строка или кортеж с указанием количества неявного заполнения. Значение заполнения по умолчанию — 0.
Код:
В следующем коде мы импортируем все необходимые библиотеки, такие как import torch, import torch.nn как nn.
- c = nn.Conv3d(18, 35, 5, stride=2): здесь мы объявляем переменную, используя квадратные ядра и равный шаг.
- p = nn.Conv3d(18, 35,(5, 7, 4), шаг =(4, 3, 3), дополнение =(6, 4, 0)): Здесь мы объявляем переменную, используя неквадратную ядра и неравный шаг с набивкой.
- input = torch.randn(22, 18, 12, 52, 102): здесь мы описываем входные и выходные переменные с помощью функции torch.randn().
- print(output) используется для печати вывода с помощью функции print().
# Importing libraries import torch import torch.nn as nn # Declaring the variable by using square kernels and equal stride c = nn.Conv3d(18, 35, 5, stride=2) # Declaring the variable by using non-square kernels and unequal stride with padding p = nn.Conv3d(18, 35,(5, 7, 4), stride=(4, 3, 3), padding=(6, 4, 0)) # Describing the input and output variables input = torch.randn(22, 18, 12, 52, 102) output = p(input) # Print output print(output)
Выход:
В приведенном ниже выводе мы видим, что значения заполнения PyTorch Conv3d печатаются на экране.
Группа
Группа PyTorch Conv3d используется для управления соединением между входами и выходами. Значение групп по умолчанию — 1.
Код:
В следующем коде мы импортируем все необходимые библиотеки, такие как import torch и import torch.nn как nn.
- g = nn.Conv3d(20, 37, 7, stride=2) используется для объявления переменной с использованием квадратных ядер и равного шага.
- input = torch.randn(24, 20, 14, 54, 104) используется для описания входной переменной с помощью функции torch.randn().
- print(output) используется для печати вывода с помощью функции print().
# Importing libraries import torch import torch.nn as nn # Declaring the variable by using square kernels and equal stride g = nn.Conv3d(20, 37, 7, stride=2) # Describing the input and output variables input = torch.randn(24, 20, 14, 54, 104) output = g(input) # Print output print(output)
Выход:
После запуска приведенного выше кода мы получаем следующий вывод, в котором видим, что значения группы PyTorch Conv3d печатаются на экране.
Расширение
Расширение PyTorch Conv3d используется для управления расстоянием между элементами ядра, а значение расширения по умолчанию равно 1.
Код:
В следующем коде мы импортируем все необходимые библиотеки, такие как import torch и import torch.nn как nn.
- c = nn.Conv3d(18, 35, 5, stride=2): здесь мы объявляем переменную, используя квадратные ядра и равный шаг.
- p = nn.Conv3d(18, 35,(5, 7, 4), шаг =(4, 3, 3), дополнение =(6, 4, 0)): Здесь мы объявляем переменную, используя неквадратную ядра и неравный шаг с набивкой.
- q = nn.Conv3d(18, 35,(5, 7, 4), шаг =(4, 3, 3), заполнение =(6, 4, 0), расширение =(5,3,1)): Здесь мы объявляем переменную, используя неквадратные ядра и неравный шаг с заполнением и расширением.
- input = torch.randn(22, 18, 12, 52, 102): здесь мы описываем переменную с помощью функции torch.randn().
- print(output) используется для печати вывода с помощью функции print().
# Importing libraries import torch import torch.nn as nn # Declaring the variable by using square kernels and equal stride c = nn.Conv3d(18, 35, 5, stride=2) # Declaring the variable by using non-square kernels and unequal stride with padding p = nn.Conv3d(18, 35,(5, 7, 4), stride=(4, 3, 3), padding=(6, 4, 0)) # Declaring the variable by using non-square kernels and unequal stride with padding and dilation q = nn.Conv3d(18, 35,(5, 7, 4), stride=(4, 3, 3), padding=(6, 4, 0), dilation=(5,3,1)) # Describing the input and output variables input = torch.randn(22, 18, 12, 52, 102) output = q(input) # Print output print(output)
Выход:
После запуска приведенного выше кода мы получаем следующий вывод, в котором видим, что значения расширения PyTorch Conv3d печатаются на экране.
Смещение
Прежде чем двигаться дальше, мы должны иметь некоторые знания о предвзятости. Предвзятость учитывает разницу между предсказанием модели и реальным результатом.
Смещение PyTorch Conv3d добавляет обучаемое смещение к выходным данным, когда его значение истинно, если оно ложно, оно не добавляет обучаемое смещение к выходным данным. Значение смещения по умолчанию — True.
Код:
В следующем коде мы импортируем библиотеку факела, например import torch.
- inp = torch.ones(4,4,9,9): Здесь мы описываем входную переменную с помощью функции torch.ones().
- c = torch.nn.Conv3d(in_channels = 1, out_channels = 1, kernel_size = 3): здесь мы используем функцию Conv3d().
- print(«Parameters = «,list(c.parameters())) используется для печати списка параметров с помощью функции print().
- print(«bias = «,c.bias) используется для печати смещения с помощью функции print().
# Import library import torch # Describe the input variable inp = torch.ones(4,4,9,9) print("Input = ",inp) # Using conv3d module c = torch.nn.Conv3d(in_channels = 1, out_channels = 1, kernel_size = 3) # Print the list of the parametrs print("Net = ",c) print("Parameters = ",list(c.parameters())) # Print the bias print("bias = ",c.bias)
Выход:
После запуска приведенного выше кода мы получаем следующий вывод, в котором видим, что значения смещения PyTorch Conv3d печатаются на экране.
PyTorch Conv3d в CNN
Прежде чем двигаться дальше, мы должны иметь некоторые знания о сверточных нейронных сетях(CNN).
Сверточная нейронная сеть — это тип искусственной нейронной сети, которая используется для распознавания изображений.
Здесь мы используем PyTorch Conv3d для работы со сверточной нейронной сетью. Это простая математическая операция, в которой мы перемещаем матрицу или ядро весов над трехмерными данными и выполняем поэлементное умножение данных.
Код:
В следующем коде сначала мы импортируем все необходимые библиотеки, такие как импорт факела, импорт переменной из torch.autograd, импорт torchvision.datasets, импорт torch.nn.init.
- traindata = dtsets.MNIST(root=’MNIST_data/’, train=True, Transform=transforms.ToTensor(), download=True) используется в качестве набора данных MNIST для поезда.
- print(‘Training dataset:\t’,traindata) требуется распечатать набор данных поезда с помощью функции print().
- class CNN(torch.nn.Module): используется для создания класса модели с помощью методов init() и front().
- CNNmodel = CNN() используется для создания экземпляра модели.
# Importuing libraries import torch from torch.autograd import Variable import torchvision.datasets as dtsets import torchvision.transforms as transforms import torch.nn.init # hyperparameters batch_size = 24 keepprobab = 1 # MNIST dataset traindata = dtsets.MNIST(root='MNIST_data/', train=True, transform=transforms.ToTensor(), download=True) testdata = dtsets.MNIST(root='MNIST_data/', train=False, transform=transforms.ToTensor(), download=True) # dataset loader dataloader = torch.utils.data.DataLoader(dataset=traindata, batch_size=batch_size, shuffle=True) # Display informations about the dataset print('Training dataset:\t',traindata) print('\nTesting dataset:\t',testdata) # Define the CNN Model class class CNN(torch.nn.Module): def __init__(self): super(CNN, self).__init__() self.layer1 = torch.nn.Sequential( torch.nn.Conv3d(1, 24, kernel_size=3, stride=1, padding=1), torch.nn.ReLU(), torch.nn.MaxPool2d(kernel_size=2, stride=2), torch.nn.Dropout(p=1 - keepprobab)) self.layer2 = torch.nn.Sequential( torch.nn.Conv3d(24, 56, kernel_size=3, stride=1, padding=1), torch.nn.ReLU(), torch.nn.MaxPool2d(kernel_size=2, stride=2), torch.nn.Dropout(p=1 - keepprobab)) self.layer3 = torch.nn.Sequential( torch.nn.Conv3d(56, 120, kernel_size=3, stride=1, padding=1), torch.nn.ReLU(), torch.nn.MaxPool2d(kernel_size=2, stride=2, padding=1), torch.nn.Dropout(p=1 - keepprobab)) self.fc1 = torch.nn.Linear(4 * 4 * 120, 627, bias=True) torch.nn.init.xavier_uniform(self.fc1.weight) self.layer4 = torch.nn.Sequential( self.fc1, torch.nn.ReLU(), torch.nn.Dropout(p=1 - keepprobab)) # L5 Final FC 627 inputs -> 12 outputs self.fc2 = torch.nn.Linear(627, 12, bias=True) # initialize parameters torch.nn.init.xavier_uniform_(self.fc2.weight) def forward(self, y): output = self.layer1(y) output = self.layer2(output) output = self.layer3(output) # Flatten them for FC output = output.view(output.size(0), -1) output = self.fc1(output) output = self.fc2(output) return output #instantiate CNN model CNNmodel = CNN() CNNmodel
Выход:
В приведенном ниже выводе мы видим, что PyTorch Conv3 в модели CNN печатается на экране.
Транспонирование
Транспонирование PyTorch Conv3d применяет оператор трехмерной транспонированной свертки к входным изображениям, собранным из некоторых входных плоскостей.
Синтаксис:
torch.nn.ConvTranspose3d(in_channels, out_channels, kernel_size, stride=1, padding=0, out_padding=0, groups=1, bias=True, dilation=1, padding_mode='zeros', device=None, dtype=None)
Параметры:
Ниже приведены параметры транспонирования PyTorch Conv3d.
- in_channels — количество каналов во входном изображении.
- out_channels — количество каналов, созданных сверткой.
- kernel_size используется как размер сверточного ядра.
- шагу предъявлен иск, чтобы контролировать шаг на основе взаимной корреляции.
- дополнение используется для управления количеством неявного заполнения нулями.
- outpu_padding используется для управления дополнительным размером, добавляемым к одной стороне выходной фигуры.
- расширение используется для управления расстоянием между точками ядра.
- группы используются для управления соединениями между входами и выходами.
Пример:
В следующем коде мы импортируем все необходимые библиотеки, такие как import torch, import torch.nn как nn.
- c = nn.ConvTranspose3d(16, 33, 3, stride=2) используется для описания переменной с использованием квадратных ядер и равного шага.
- c = nn.ConvTranspose3d(16, 33,(3, 5, 2), шаг =(2, 1, 1), дополнение =(0, 4, 2)) используется для описания переменной с использованием неквадратных ядер. и неравный шаг с подкладкой.
- inp = torch.randn(20, 16, 10, 50, 100): здесь мы описываем входную переменную с помощью функции torch.randn().
- print(outp) используется для печати вывода с помощью функции print().
# Importing Libraries import torch import torch.nn as nn # Describing the variable by using square kernels and equal stride c = nn.ConvTranspose3d(16, 33, 3, stride=2) # Describing the variable by using non-square kernels and unequal stride and with padding c = nn.ConvTranspose3d(16, 33,(3, 5, 2), stride=(2, 1, 1), padding=(0, 4, 2)) # Declaring the input variable inp = torch.randn(20, 16, 10, 50, 100) outp = c(inp) # Print output print(outp)
Выход:
После запуска приведенного выше кода мы получаем следующий вывод, в котором видим, что значения транспонирования PyTorch Conv3d печатаются на экране.
Параметры
Прежде чем двигаться дальше, мы должны иметь некоторые знания о параметрах. Параметры — это измеримые факторы, установленные как один из наборов, описывающих систему или задающих условия ее функционирования.
Код:
В следующем коде мы импортируем все необходимые библиотеки, такие как import torch и import torch.nn как nn.
- k = nn.Conv3d(22, 39, 9, шаг=2) используется для описания переменной с использованием квадратных ядер и равного шага.
- inp = torch.randn(26, 22, 16, 56, 106): здесь мы описываем входную переменную с помощью функции torch.randn().
- print(out) используется для печати вывода с помощью функции print().
# Importing libraries import torch import torch.nn as nn # Declaring the variable by using square kernels and equal stride k = nn.Conv3d(22, 39, 9, stride=2) # Describing the input and output variables inp = torch.randn(26, 22, 16, 56, 106) out = k(inp) # Print output print(out)
Выход:
В приведенном ниже выводе мы видим, что значения параметров PyTorch Conv3d печатаются на экране.
Вес
Вес PyTorch Conv3d используется для выполнения свертки в 3D-данные и некоторых дополнительных опций, таких как заполнение и т. д.
Код:
В следующем коде мы импортируем библиотеку факела, например import torch.
- inpt = torch.ones(1,1,3,3,3): Здесь мы описываем входную переменную с помощью функции torch.ones().
- print(«Input = «,inpt) используется для печати входных данных с помощью функции print().
- w = torch.nn.Conv3d(in_channels = 1, out_channels = 1, kernel_size = 3): здесь мы используем функцию Conv3d().
- print(«Parameters = «,list(w.parameters())) используется для печати списка параметров.
- print(«Weight = «,w.weight) используется для печати весов.
- print(«Output = «,out) используется для печати вывода с помощью функции print().
# Import library import torch # Describe the input variable inpt = torch.ones(1,1,3,3,3) # Print input print("Input = ",inpt) w = torch.nn.Conv3d(in_channels = 1, out_channels = 1, kernel_size = 3) # Print the parameter list print("net = ",w) print("Parameters = ",list(w.parameters())) # Print the weight print("Weight = ",w.weight) # Print the bias print("bias = ",w.bias) out = w(inpt) print("Output = ",out)
Выход:
После запуска приведенного выше кода мы получаем следующий вывод, в котором видим, что вес PyTorch Conv3d печатается на экране.
Input_channels и output_channels
Input_channels PyTorch Conv3d используются в качестве количества каналов во входном изображении. Otput_channels PyTorch Conv3d используются в качестве количества каналов, создаваемых сверткой.
Код:
В следующем коде сначала мы импортируем все необходимые библиотеки, такие как импорт факела, импорт переменной из torch.autograd, импорт torch.nn как nn, импорт torch.nn.functional.
- class mod(nn.Module): Здесь мы создаем класс модели с помощью функций init() и front().
- size = y.size()[1:] используется в качестве всех измерений, кроме размеров партии.
- model = mod() используется как экземпляр модели.
- print(model) используется для печати модели с помощью функции print().
# Importing Libraries import torch from torch.autograd import Variable import torch.nn as nn import torch.nn.functional as fun # Create model class class mod(nn.Module): def __init__(self): super(mod, self).__init__() # 1 input image channel, 10 output channels, 9x9 square convolution self.conv1 = nn.Conv3d(1, 10, 9) self.conv2 = nn.Conv3d(10, 20, 9) # an affine operation: y = Wx + b self.fc1 = nn.Linear(20 * 9 * 9, 142) self.fc2 = nn.Linear(142, 88) self.fc3 = nn.Linear(88, 14) def forward(self, y): # Max pooling over a(2, 2) window y = fun.max_pool2d(fun.relu(self.conv1(y)),(2, 2)) # If the size is a square you can only specify a single number y = fun.max_pool2d(fun.relu(self.conv2(y)), 2) y = y.view(-1, self.numflat_featurs(y)) y = fun.relu(self.fc1(y)) y = fun.relu(self.fc2(y)) y = self.fc3(y) return y def numflat_featurs(self, y): # all dimensions except the batch dimension size = y.size()[1:] numfeaturs = 1 for i in size: numfeaturs *= i return numfeaturs # Instantiate the model model = mod() # Print the model print(model)
Выход:
После запуска приведенного выше кода мы получаем следующий вывод, в котором мы видим, что значения input_channels и output_channels PyTorch Conv3d печатаются на экране.