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 — это простая арифметическая операция, внутри которой мы перемещаем матрицу или ядро весов над трехмерными данными и выполняем поэлементное умножение данных.

Код:

В следующем коде мы импортируем все необходимые библиотеки, такие как 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

Функционал

Функционал 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 Conv3d

Заполнение

Заполнение 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

Группа

Группа 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

Расширение

Расширение 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

Смещение

Прежде чем двигаться дальше, мы должны иметь некоторые знания о предвзятости. Предвзятость учитывает разницу между предсказанием модели и реальным результатом.

Смещение 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

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 в 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 печатаются на экране.

Транспонирование 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

Вес

Вес 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 печатается на экране.

Вес 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 печатаются на экране.

Входные_каналы и выходные_каналы PyTorch Conv3d

Добавить комментарий