Исправляем ошибку AttributeError с Session в Tensorflow 2.0
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
В TensorFlow 2.x утратила актуальность практика использования сессий, заменившаяся на подход eager execution. Если у вас остаётся код, всё ещё связанный с tf.Session()
, вам потребуется включить режим совместимости: отключить eager execution с помощью tf.compat.v1.disable_eager_execution()
. После этого можно воспользоваться tf.compat.v1.Session()
. Разберёмся на примере:
import tensorflow.compat.v1 as tf
# Извини, eager execution, пора нам расстаться
tf.disable_eager_execution()
# tf.compat.v1.Session — ностальгия по TensorFlow 1.x
with tf.Session() as sess:
# Возвращение к любимому API TensorFlow 1.x
В TensorFlow 2.x выполнение тензоров и операций происходит напрямую: сессионная практика осталась в прошлом.
Различия между TensorFlow 1.x и 2.x
Парадигма TensorFlow 2.0
Перехоd от TensorFlow 1.x к TensorFlow 2.x привёл к кардинальной перестройке концепции и замене отложенного выполнения на eager execution. Ранее, в TensorFlow 1.x все операции запускались в графе и исполнялись в контексте сессии. В TensorFlow 2.x процесс исполнения операций стал мгновенным, позволяя обойтись без создания сессии.
Напоминаем о tf.compat.v1
Для настольгически устроенных в TensorFlow 2.x предусмотрен подфреймворк tf.compat.v1
. Он позволяет использовать уже знакомый функционал TensorFlow 1.x в рамках TensorFlow 2.x, как будто времена не менялись.
tf.function — возможность графов в TF 2.x
Когда требуется выполнение операций в контексте графа, TensorFlow 2.x предлагает к вашему вниманию функциональность tf.function()
. Она "упаковывает" ваши функции в структуру, которая поможет TensorFlow в создании оптимизированных графов и обеспечит лучшую производительность.
Обновления — залог успеха
Как в жизни, так и в TensorFlow 2.x крайне важным является быть в курсе всех изменений, следовать официальной документации TensorFlow и поддерживать ваш код в актуальном состоянии. Используйте передовые методики и не уступайте давлению устаревших технологий.
Визуализация
Для наглядности продемонстрируем переход от TensorFlow 1.x к TensorFlow 2.x на примере работы с сессиями:
В TensorFlow 1.x работа напоминала процесс запуска автомобиля с ключом (сессия Session
), после которого начиналось движение (исполнение операций):
import tensorflow as tf
sess = tf.Session() # Зажигание включено, мотор заведён!
sess.run(...) # Отправились в путь!
sess.close() # Пункт назначения достигнут, выключаем мотор.
В TensorFlow 2.0 всё проще и продуктивнее — система всегда готова к работе (прияздравствовать, eager execution):
import tensorflow as tf
tf.constant(...) # Мы уже приехали, не было даже нужды заводить мотор!
tf.matmul(...) # Путешествие? Да мы уже здесь!
Основная идея: если ваш средство передвижения — это старый автомобиль, его нужно заводить. Но если у вас – Tesla, то ваши маршрут начинается прямо сейчас, без лишних заморочек!
Путь к миру TensorFlow 2.x
Не бойтесь расставаться с привычками
Использование TensorFlow 1.x внутри TensorFlow 2.0 сработает как временное решение, но оно не поможет на долгосрочной перспективе. Вашей главной задачей является рефакторинг кода для бесперебойной работы в условиях TensorFlow 2.x, включая использование eager execution и tf.function()
.
Шпаргалка для сглаживания перехода
Применяйте руководство по миграции для облегчения процесса перехода с TensorFlow 1.x на 2.x — оно содержит необходимые инструкции по адаптации кода.
Отладочные функции — tf.print
Забудьте о примитивном print
! Вместо него используйте tf.print()
, который идеально интегрирован с TensorFlow и предоставляет продвинутые возможности для отладки.
Обновления в синтаксисе TensorFlow 2.x
В TensorFlow 2.x произошло обновление названий и функций. Иногда изменено и поведение тех или иных елементов. Важно изучать актуализацию синтаксиса и часто просматривать Таблицу соответствия функций TF 1.x и TF 2.x.
Полезные материалы
- Авто-корректировка API TF 1.x для compat.v1 – подробное руководство по миграции кода TensorFlow 1.x для работы с
tf.compat.v1.Session
в TensorFlow 2.0. - Модуль: tf.compat.v1 – детальная документация API TensorFlow 2.0 по модулю
tf.compat.v1
. - Основы TensorFlow – изучаем eager execution в TensorFlow 2.0 и основные концепции фреймворка.
- Миграция на TensorFlow 2 – Путеводитель, который говорит о том, как перейти с TensorFlow 1.x на TensorFlow 2.x.
- Эффективный TensorFlow 2.0: лучшие практики и изменения – Обзор лучших методик использования TensorFlow 2.0 и основные изменения платформы с переходом от 1.x к 2.x.