Часть I. Основные операции с тензорами
Эта статья даст вам общее представление о Pytorch и даст вам пошаговые инструкции о том, как реализовать некоторые основные операции (которые необходимо изучить) в тензорах с помощью Pytorch.
В этой статье будут рассмотрены следующие темы:
1. Что такое тензоры
2. Разница между базовыми массивами и тензорами
3. Как создавать тензоры
4. Основные математические операции с использованием Тензоры
Что такое Питорч?
PyTorch — это библиотека машинного обучения с открытым исходным кодом, основанная на библиотеке Torch, используемая для таких приложений, как компьютерное зрение и обработка естественного языка, в первую очередь разработанная исследовательской лабораторией искусственного интеллекта Facebook.
В чем разница между Numpy и Pytorch?
Проще говоря, Numpy создает массивы, которые будут работать в памяти вашего процессора. Используя Pytorch, вы можете создавать тензоры, которые могут использовать GPU для быстрой обработки.
У тензоров есть некоторые дополнительные функции, такие как Auto grad, которые помогут реализовать нейронные сети гораздо проще.
Самое важное различие между этими двумя фреймворками — именование. Numpy вызывает массивы тензоров (матриц или векторов большой размерности), в то время как в PyTorch есть просто тензоры. Все остальное очень похоже.
Почему ПиТорч?
Даже если вы уже знакомы с Numpy, все равно есть несколько причин переключиться на PyTorch для тензорных вычислений. Основная причина — ускорение графического процессора. Как вы увидите, использовать GPU с PyTorch очень просто и очень быстро. Если вы выполняете большие вычисления, это полезно, потому что это значительно ускоряет работу.
Почему Нампи?
Numpy — наиболее часто используемая вычислительная среда для линейной алгебры. Хороший пример использования Numpy — быстрые эксперименты и небольшие проекты, потому что Numpy — это облегченная структура по сравнению с PyTorch.
ПРИМЕЧАНИЕ. Если на вашем компьютере не установлен PyTorch. Попробуйте использовать совместную лабораторию Google или блокноты Kaggle.
Давайте начнем !
import torch import numpy as np
Создание тензоров с помощью Torch
Тензор — это размерная структура данных. Векторы — это одномерные структуры данных, а матрицы — двумерные структуры данных. Тензоры внешне похожи на эти другие структуры данных, но разница в том, что они могут существовать в размерностях от нуля до n.
Создание тензоров из простых списков и из массивов Numpy
data = [[1 , 2 ] , [3 , 4]] np.array(data) data = torch.tensor(data)
Чтобы проверить тип данных, просто напишите
data.dtype
Создание пустого тензора размером 3 строки x 4 столбца
a = torch.empty(size =(3,4)) a
Примечание. В ваших тензорах должны быть некоторые случайные значения, но не беспокойтесь, создаются пустые тензоры, чтобы вы могли хранить в них некоторые новые значения тензора, чтобы вы могли просто перезаписать эти значения.
Создание пустого двумерного тензора с размером (3 строки x 4 столбца)
b = torch.empty(size=(2 , 3 ,4)) b
Создание тензора с размером (3 строки x 4 столбца) и инициализация всех значений до 1
a =torch.ones(size = (3,4)) print(a) print(a*3)
Создание тензора с диапазоном чисел
print(torch.arange(10)) print(torch.arange(10).shape)
torch.linspace(start = 1 , end = 10 , steps = 20)
Создание тензора с использованием массивов Numpy
arr = np.arange(10) torch.tensor(arr)
Чтобы изменить тип данных тензора, просто напишите
torch.tensor(arr , dtype = torch.float32)
Чтобы преобразовать массив Tensor в Numpy, напишите
t.numpy()
Создание тензора с диагональными значениями
torch.eye(3)
t1 = torch.diag(torch.arange(5)) t1
torch.diag(t1)
Создание массива со случайными числами размером 3 строки и 4 столбца
torch.rand(size = (3 ,4))
x = torch.ones(size = (3 , 4)) y = torch.ones(size = (3 , 4))*4 print(x ,"\n\n", y)
Добавление двух тензоров
Существуют разные способы добавления тензоров
#1 z = torch.empty(size = (3,4)) torch.add(x,y ,out=z)
#2 z = torch.add(x ,y) z
#3 z = x+y z
Создание другой переменной для хранения значений требует памяти, чтобы избежать этого, вы можете добавить две переменные и сохранить сумму в одной переменной.
#x+=y x.add_(y) ## to save memory
Умножение между двумя тензорами
Существуют разные способы умножения двух тензоров.
#1 x = torch.ones(size = (3 , 4)) y = torch.ones(size = (4, 5))*3 torch.matmul(x,y)
#2 torch.mm(x , y)
Пакетное умножение
batch = 10 m = 30 n = 20 k = 10 x = torch.rand(size =(batch , m , n )) y = torch.rand(size =(batch , n , k )) torch.bmm(x,y).shape
Изменение формы и размера тензоров
t = torch.arange(15) t
t.shape
t.unsqueeze(axis = 0 ).shape #row
t.unsqueeze(axis = 1)
Вы также можете изменить свои тензоры в определенных строках и столбцах, используя метод просмотра и изменения формы.
t.view(3,5)
t1 = torch.linspace(0 , 15 , 24) t1
t1.shape
t1.view(2 , 3 ,4 ) # 2 dimensions , 3 rows , 4 columns
t1.reshape(2 , 3 , 4) # 2 dimensions , 3 rows and 4 columns
Это некоторые основные операции, которых более чем достаточно, если вы хотите начать работу с Pytorch. Во второй части этой статьи я покажу вам, как использовать эти основные операции для создания нейронной сети с нуля. Если у вас все еще есть какие-то сомнения, не стесняйтесь обращаться ко мне.
Скопируйте и отредактируйте этот блокнот Kaggle для практики:
Здесь Проверьте вторую часть этой серии! 👇