«Основная практика MindSpore» (1) — Основы MindSpore

Хуавей
«Основная практика MindSpore» (1) — Основы MindSpore

1 Введение в MindSpore

1.1 О MindSpore

MindSpore — это разработанная компанией Huawei вычислительная платформа искусственного интеллекта для совместной работы по требованию между устройством, периферией и облаком во всех сценариях.Он предоставляет единый API для всех сценариев и предоставляет сквозные возможности для разработки моделей, эксплуатации моделей и развертывание модели ИИ для всех сценариев.

MindSpore использует распределенную архитектуру совместной работы по запросу на границе облака, новую парадигму дифференциального нативного программирования и новый режим выполнения AI Native для повышения эффективности использования ресурсов, безопасности и надежности, одновременно снижая порог для разработки ИИ в отрасли и высвобождая вычислительную мощность чипов Ascend, чтобы помочь Pratt & Whitney AI.

Для получения подробной информации см.:Официальный сайт MindSpore

1.2 Установка MindSpore

MindSpore поддерживает Ascend, GPU и CPU.Вы можете выбрать пакет MindSpore, который подходит вам в соответствии с вашей платформой.В качестве примера для установки используется платформа Windows.

image.png MindSpore поддерживает платформу Windows, но может работать только в режиме CPU (временно не поддерживает GPU на платформе Windows). Если вы хотите попробовать поддержку графического процессора MindSpore, вам нужно использовать серию Ubuntu или EulerOS от Huawei.

1.3 Установите Анаконду

Anaconda настоятельно рекомендуется для управления виртуальными средами Python.

ты можешь идтиофициальный сайт анакондыСкачать, вплоть до Далее.

1.4 Создание Python Env для MindSpore

В настоящее время MindSpore поддерживает только Python 3.7.5.Созданная ниже оболочка pyhton называется mindspore:

conda create -n mindspore python=3.7.5

1.5 Установите MindSpore

Мы используем pip для установки

pip install скоро-выпуск.obs.can-north-4.no huaweicloud.com/1.2.1/minds…   --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i pypi.tuna.tsinghua.edu.cn/simple

1.6 Убедитесь, что установка прошла успешно

python -c "import mindspore;print(mindspore.version)"

Если выводится номер версии MindSpore, установка MindSpore прошла успешно.No module named 'mindspore'Указывает, что установка не удалась.

2 Основы MindSpore

2.1 Тензоры и типы данных

Тензор — это основная структура данных в работе сети MindSpore. Тип данных в тензоре может ссылаться на dtype. Тензоры разных размерностей представляют разные данные, 0-мерные тензоры представляют скаляры, 1-мерные тензоры представляют векторы, 2-мерные тензоры представляют матрицы, 3-мерные тензоры могут представлять три канала RGB цветовых изображений и так далее.

Тензоры MindSpore поддерживают различные типы данных, включая int8, int16, int32, int64, uint8, uint16, uint32, uint64, float16, float32, float64 и bool_, которые соответствуют типам данных NumPy один к одному. В потоке обработки операций MindSpore числа int в Python будут преобразованы в определенный тип int64, а числа с плавающей запятой будут преобразованы в определенный тип float32.

Шаг 1 Укажите тип данных MindSpore

Импортируйте MindSpore и настройте ячейку блокнота Jupyter для одновременного вывода нескольких строк.

# 导入MindSpore
import mindspore
from mindspore import dtype 
from mindspore import Tensor

# cell同时输出多行
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
# 指定数据类型
a = 1
type(a)
b = Tensor(a, dtype.float64) 
b.dtype 

image.png

Шаг 2. Построение тензора

При построении тензоров можно передавать типы Tensor, float, int, bool, tuple, list и NumPy.array. В кортеже и списке можно хранить только типы float, int и bool.

Когда Tensor инициализирован, можно указать dtype. Если dtype не указан, начальные значения int, float и bool генерируют 0-мерные тензоры с типами данных mindspore.int32, mindspore.float32 и mindspore.bool_ соответственно. генерируемые начальные значения кортежа и списка такие же, как у кортежа и списка.Типы данных, хранящиеся в нем, соответствуют друг другу.Если существует несколько разных типов данных, в соответствии с приоритетом: bool

Создание тензоров из массивов

import numpy as np
from mindspore import Tensor

# 用数组创建张量
x = Tensor(np.array([[1, 2], [3, 4]]), dtype.int32)
x

image.png

Создайте тензор с числами

# 用数值创建张量
y = Tensor(1.0, dtype.int32)
z = Tensor(2, dtype.int32)
y
z

image.png

Создайте тензор с помощью Bool

# 用Bool创建张量
m = Tensor(True, dtype.bool_)
m

image.png

Создание тензоров из кортежей

# 用tuple创建张量
n = Tensor((1, 2, 3), dtype.int16)
n

image.png

создать тензор из списка

# 用list创建张量
p = Tensor([4.0, 5.0, 6.0], dtype.float64)
p

image.png

Создание тензоров с константами

# 用常量创建张量
q = Tensor(1, dtype.float64)
q

image.png

Шаг 3. Свойства тензоров

Свойства тензоров включают форму и тип данных.

  • Форма: форма тензора, который представляет собой кортеж.
  • Тип данных: dtype Tensor, который является типом данных MindSpore.
x = Tensor(np.array([[1, 2], [3, 4]]), dtype.int32)
x_shape = x.shape  # 形状
x_dtype = x.dtype  # 数据类型

x_shape
x_dtype

image.png

x = Tensor(np.array([[1, 2], [3, 4]]), dtype.int32)

x.shape # 形状
x.dtype # 数据类型
x.ndim  # 维度
x.size  # 大小

image.png

Шаг 4 Тензорные методы

asnumpy(): преобразовать тензор в массив NumPy.

y = Tensor(np.array([[True, True], [False, False]]), dtype.bool_)

# 将Tensor数据类型转换成NumPy
y_array = y.asnumpy()

y
y_array

image.png

2.2 Загрузка набора данных

MindSpore.dataset предоставляет API для загрузки и обработки различных распространенных наборов данных, таких как MNIST, CIFAR-10, CIFAR-100, VOC, ImageNet, CelebA и т. д.

Шаг 1 Загрузите набор данных MNIST

mindspore.dataset.MnistDataset

import os
import mindspore.dataset as ds
import matplotlib.pyplot as plt

dataset_dir = "./data/train"  # 数据集路径

# 从mnist dataset读取3张图片
mnist_dataset = ds.MnistDataset(dataset_dir=dataset_dir, num_samples=3)

# 设置图像大小
plt.figure(figsize=(8,8))
i = 1

# 打印3张子图
for dic in mnist_dataset.create_dict_iterator(output_numpy=True):
    plt.subplot(3,3,i)
    plt.imshow(dic['image'][:,:,0])
    plt.axis('off')
    i +=1

plt.show()

image.pngMindSpore также поддерживает загрузку наборов данных в различных форматах хранения данных.Пользователи могут напрямую использовать соответствующие классы в mindspore.dataset для загрузки файлов данных на диск.

Шаг 2 Загрузите набор данных NumPy

mindspore.dataset.NumpySlicesDataset

import mindspore.dataset as ds

data = ds.NumpySlicesDataset([1, 2, 3], column_names=["col_1"])
for x in data.create_dict_iterator():
    print(x)

image.png

3 ссылки