В этом разделе объясняется, как выполнять преобразование между операторами torch и numpy.
Обзор
Если вы хотите экспортировать модель машинного обучения, обученную с помощью Pytorch, в формат ONNX для использования, например, с ailia SDK, вам необходимо заменить постобработку, написанную в Pytorch, на numpy. Хотя между функциями Pytorch и numpy есть много общего, синтаксис часто немного отличается.
О фонарике
Pytorch – это платформа искусственного интеллекта, разработанная Facebook, которая поддерживает тензорные операции, как и numpy, в дополнение к уровню искусственного интеллекта.
О numpy
numpy — это библиотека числовых вычислений, широко используемая в машинном обучении. Серверная часть реализована на C, а быстрые числовые операции можно выполнять на Python.
Совместимость Torch и numpy
Преобразование из факела в numpy
Получите массив numpy из torch Tensor.
numpy_tensor = torch_tensor.numpy()
Преобразование из numpy в факел
Преобразуйте массив numpy в тензор факела.
torch_tensor = torch.from_numpy(numpy_tensor)
Создайте новый тензор
Выделяет новый тензор заданной формы.
y = torch.FloatTensor(a.shape) y = np.zeros(a.shape)
Максимум и минимум на элемент
Вычисляет максимальное и минимальное значения для каждого элемента двух тензоров.
y = torch.max(a,b) y = torch.min(a,b) y = np.maximum(a,b) y = np.minimum(a,b)
Вычислить максимальное значение
Ниже приведен код для вычисления максимального значения тензора и индекса этого элемента, который выполняется одним вызовом в torch, но требует нескольких вызовов в numpy.
y_value, y_idx= torch.max(a, 1, keepdim=True) y_value = np.max(a, axis=1, keepdims=True) y_idx = np.argmax(a.numpy(), axis=1) y_idx = y_idx.reshape((y_idx.shape[0],1))
Сортировка
Ниже приведен код для сортировки элементов тензора и возврата отсортированных индексов, который выполняется одним вызовом в torch, но требует нескольких вызовов в numpy.
y_value, y_idx = torch.sort(a, descending=True) y_value = np.sort(a) y_value = y_value[::-1] y_idx = np.argsort(a) y_idx = y_idx[::-1]
Клип
Обрезать значения тензора на одном ребре можно с помощью None
.
y = torch.clamp(a,min=b) y = np.clip(a,n,None)
Изменить размер
Указав -1 для количества элементов, размер определенного измерения может быть определен автоматически.
y = a.view(1,-1,1) y = a.reshape(1,-1,1)
Конкатенация
Ниже приведен код для объединения двух тензоров.
y = torch.cat(a,b) y = np.concatenate(a,b)
Извлечение уникальных элементов
Извлечение уникальных элементов из тензоров.
y = a.unique() y = np.unique(a)
Добавление размеров
Увеличьте размерность тензора.
y = a.unsqueeze(0) y = a.expand_dims(a,0)
Софтмакс
y = torch.softmax(x) def softmax(x): s= np.sum(np.exp(x)) return np.exp(x)/s y = softmax(x)
Топор Инк. разработал ailia SDK, который обеспечивает кросс-платформенный быстрый вывод на основе графического процессора.
ax Inc. предоставляет широкий спектр услуг от консалтинга и создания моделей до разработки приложений и SDK на основе ИИ. Не стесняйтесь связаться с нами для любого запроса.