Рекомендуемое сравнительное чтение:
Ввиду того, что tensorflow в настоящее время обновляет версию 2.0, блогер также добавил в блог метод динамического преобразования для версии 2.0, обновленный --2019//09//29.
Рисунок 1 | Рисунок 2. Тензорный поток |
---|
- Описание проблемы
Когда мы используем TensorFlow для обучения глубокому обучению, мы часто приветствуем данные Numpy, такие как наши csv или фотоданные.
Но все мы знаем, что TensorFlow использует Tensor для хранения переменных во время обучения, и выход сети также Tensor.
В общем, мы не почувствуем разницы между Numpy и Tensor, потому что сеть TensorFlow будет автоматически конвертировать в Tensor для обработки при вводе данных Numpy.
Однако при выводе сети результаты вывода по-прежнему являются тензорами.Когда мы используем эти результаты для выполнения операций, которые могут быть выполнены только данными Numpy, возникнут необъяснимые ошибки.
Например, когда я хочу использовать matplotlib для отображения вывода автоэнкодера и декодера, я получу ошибку
TypeError: Image data cannot be converted to float
Решение
ТФ 1.x версия
Иногда решение простое, но найти ошибку сложнее, поэтому я рекомендую метод, заключающийся в явном преобразовании данных.
- Numpy2Tensor
Хотя сеть TensorFlow автоматически преобразуется в Tensor для обработки при вводе данных Numpy, мы также можем явно преобразовать ее самостоятельно:
data_tensor= tf.convert_to_tensor(data_numpy)
- Tensor2Numpy
Результаты вывода сети по-прежнему являются тензорами, и когда мы используем эти результаты для выполнения операций, которые могут быть выполнены только данными Numpy, возникнут необъяснимые ошибки. Решение:
with tf.Session() as sess:
data_numpy = data_tensor.eval()
Версия TF 2.x (обновлено 2019//09//29)
- Numpy2Tensor (такой же, как версия 1.x)
Хотя сеть TensorFlow автоматически преобразуется в Tensor для обработки при вводе данных Numpy, мы также можем явно преобразовать ее самостоятельно:
data_tensor= tf.convert_to_tensor(data_numpy)
- Tensor2Numpy
Результаты вывода сети по-прежнему являются тензорами, и когда мы используем эти результаты для выполнения операций, которые могут быть выполнены только данными Numpy, возникнут необъяснимые ошибки. В качестве обходного пути, поскольку версия 2.x отменяет механизм сеанса, разработчики могут напрямую выполнить метод .numpy() для преобразования тензора:
data_numpy = data_tensor.numpy()
В то же время всем рекомендуется обратить внимание на публичный аккаунт автора «Минимальный ИИ» (ID: BriefAI), а также вместе обсудить и изучить теорию глубокого обучения и технологию разработки приложений.
Приглашаем всех обратить внимание на общедоступную учетную запись Сяосуна ** «Минимальный ИИ»**, чтобы вы могли научиться глубокому обучению:
Основываясь на обмене теорией глубокого обучения и технологиями разработки приложений, автор часто будет делиться содержимым сухих товаров глубокого обучения.Когда вы изучаете или применяете глубокое обучение, вы также можете общаться со мной и отвечать на любые вопросы, с которыми вы сталкиваетесь.
отЭксперт по блогам CSDN&Чжиху обозреватель глубокого обучения@小宋это?