Эта статья сочетается сОнлайн-среда Pytorch, вы можете испытать это прямо в Интернете.
Pytorch — это пакет для научных вычислений на основе Python, выпущенный исследовательской группой Facebook в области искусственного интеллекта, предназначенный для двух типов случаев: 1. Замена numpy для использования потенциала графического процессора 2. Экспериментальная платформа для глубокого обучения, обеспечивающая высокую степень гибкости. и эффективность.
Адрес онлайн-практики:Быстрый старт/онлайн-лаборатория Pytorch
1. Введение в Pytorch
Pytorch — это пакет для научных вычислений на основе Python, выпущенный исследовательской группой Facebook по искусственному интеллекту и предназначенный для двух типов случаев:
- Замена numpy для использования потенциала GPU (онлайн-среда пока не поддерживает GPU)
- Экспериментальная платформа для глубокого обучения, обеспечивающая высокую степень гибкости и эффективности.
2. Особенности и преимущества Pytorch
2.1 Особенности Pytorch
- PyTorch предоставляет базовую библиотеку тензорных операций, работающую на GPU/CPU;
- Встроенная библиотека нейросетей;
- Обеспечить функцию обучения модели;
- Многопроцессорная библиотека, поддерживающая разделяемую память и т. д.;
2.2 Особенности Pytorch
- Нахождение в экосистеме Python, языка № 1 для машинного обучения, позволяет разработчикам использовать широкий спектр библиотек и программного обеспечения Python, таких как NumPy, SciPy и Cython (компилировать Python в язык C для ускорения);
- (Самое большое преимущество) Улучшает существующие нейронные сети, обеспечивая более быстрый способ — без перестройки всей сети с нуля благодаря динамической структуре вычислительного графа PyTorch, а не большинству фреймворков с открытым исходным кодом (графы статических вычислений, используемые TensorFlow, Caffe, CNTK, Theano и т. д. .);
- Предоставлять наборы инструментов, такие как torch, torch.nn, torch.optim и т. д.;
3. Общий набор инструментов Pytorch
- torch : тензорная библиотека, похожая на NumPy, с мощной поддержкой графического процессора;
- torch.autograd : библиотека автоматического распознавания на основе ленты, которая поддерживает все дифференцируемые тензорные операции в torch;
- torch.nn: библиотека нейронной сети, которая не покрыта и глубоко интегрирована с autograd для максимальной гибкости;
- torch.optim: пакет оптимизации, используемый с torch.nn, включая стандартные методы оптимизации, такие как SGD, RMSProp, LBFGS, Adam;
- torch.multiprocessing: многопроцессорный параллелизм Python, совместное использование памяти тензоров torch между процессами;
- torch.utils: загрузчик данных. С кроссовками и другими удобными функциями;
- torch.legacy(.nn/.optim): устаревший код, перенесенный из Torch для обратной совместимости;
4. Создание тензора
- импортировать пакет pytorch импортировать факел
- jupyter notebook
import torch
#创建一个5*3的随机矩阵并显示它(Shift+Enter)
x=torch.rand(5,3)
x
5. тензорная операция
y=torch.ones(5,3)
#创建一个5*3的全是1矩阵并显示它
y
#计算两个矩阵相加(注意尺寸要一模一样)
z=x+y
z
#矩阵乘法,矩阵转置
q=x.mm(y.t())
Все операции Numpy над ndarray можно применить к тензору
Справочник по операциям с тензоромhttp://pytorch.org/docs/master/tensors.html
- Преобразование из numpy в тензор: torch.from_numpy(a)
- Преобразование из тензора в numpy: a.numpy()
- Самая большая разница между тензором и numpy: тензор может работать на GPU
- Перейти к операции с графическим процессором (x.cpu() преобразуется в процессор)
if torch.cuda.is_available():
x=x.cuda()
y=y.cuda()
print(x+y)
6. Нумпи-мост
Преобразуйте Torch Tensor и массив numpy друг в друга. Обратите внимание, что массивы Torch Tensor и Numpy будут совместно использовать свое пространство для хранения, и изменение одного приведет к изменению другого.
# 此处演示tensor和numpy数据结构的相互转换
a = torch.ones(5)
b = a.numpy()
# 此处演示当修改numpy数组之后,与之相关联的tensor也会相应的被修改
a.add_(1)
print(a)
print(b)
# 将numpy的Array转换为torch的Tensor
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out=a)
print(a)
print(b)
# 另外除了CharTensor之外,所有的tensor都可以在CPU运算和GPU预算之间相互转换
# 使用CUDA函数来将Tensor移动到GPU上
# 当CUDA可用时会进行GPU的运算
if torch.cuda.is_available():
x = x.cuda()
y = y.cuda()
x + y
7. Динамический вычислительный график
- Это самая важная особенность pytorch
- Сделать вычислительные модели более гибкими и сложными
- Пусть алгоритм обратного распространенияв любой момент
7.1 Автоматическое дифференцирование переменных
градиент градиента, распространение - это градиент
определить переменную автоматического дифференцирования
from torch.autograd import Variable
#Variable:自动微分变量
x=Variable(torch.ones(2,2),requires_grad=True)
#把一个2*2的张量转变成微分的变量(添加节点,构造计算图)
x
y=x+2
y.creator
#y的父节点
z=torch.mean(y*y)
z.data
Отличие от тензора: запишите все пути вычислений и постройте граф вычислений в памяти.
7.2 Многослойные операции
z=m((x+2)*(x+2))
Многослойная нейронная сеть
Вычисление градиентов: производные
z.backward()
#z对x的偏导
#只有叶节点可以算grad。只有x有grad信息,因为它没有父节点
print(z.grad)
print(y.grad)
print(x.grad)
7.3 Сумасшедшие функциональные зависимости
s=Variable(torch.FloatTensor([[0.01,0.02]]),requires_grad=True)
x=Variable(torch.ones(2,2),requires_grad=True)
for i in range(10):
s=s.mm(x)
#赋值的操作会多一个新节点出来
z=torch.mean(s)
#backward()求导计算
z.backward()
print(x.grad)
print(s.grad)
8. Нейронные сети
Для построения нейронных сетей можно использовать пакет torch.nn, нажмитеБыстрый старт Pytorch + онлайн-среда, вы можете просматривать и практиковать онлайн.
- Вы также можете попробовать другое программное обеспечение с открытым исходным кодом в Интернете:Библиотека программного обеспечения лабораторного здания
- Если вас интересует какое-либо программное обеспечение с открытым исходным кодом, пожалуйста, оставьте сообщение ниже, и вы также можете представить программное обеспечение с открытым исходным кодом, с которым вы знакомы. Способ подачи:Как пользоваться библиотекой программного обеспечения.