Исправляем ошибку AttributeError с Session в Tensorflow 2.0

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

В TensorFlow 2.x утратила актуальность практика использования сессий, заменившаяся на подход eager execution. Если у вас остаётся код, всё ещё связанный с tf.Session(), вам потребуется включить режим совместимости: отключить eager execution с помощью tf.compat.v1.disable_eager_execution(). После этого можно воспользоваться tf.compat.v1.Session(). Разберёмся на примере:

Python
Скопировать код
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 выполнение тензоров и операций происходит напрямую: сессионная практика осталась в прошлом.

Кинга Идем в IT: пошаговый план для смены профессии

Различия между 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), после которого начиналось движение (исполнение операций):

Python
Скопировать код
import tensorflow as tf
sess = tf.Session()  # Зажигание включено, мотор заведён!
sess.run(...)       # Отправились в путь!
sess.close()        # Пункт назначения достигнут, выключаем мотор.

В TensorFlow 2.0 всё проще и продуктивнее — система всегда готова к работе (прияздравствовать, eager execution):

Python
Скопировать код
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.

Полезные материалы

  1. Авто-корректировка API TF 1.x для compat.v1 – подробное руководство по миграции кода TensorFlow 1.x для работы с tf.compat.v1.Session в TensorFlow 2.0.
  2. Модуль: tf.compat.v1 – детальная документация API TensorFlow 2.0 по модулю tf.compat.v1.
  3. Основы TensorFlow – изучаем eager execution в TensorFlow 2.0 и основные концепции фреймворка.
  4. Миграция на TensorFlow 2 – Путеводитель, который говорит о том, как перейти с TensorFlow 1.x на TensorFlow 2.x.
  5. Эффективный TensorFlow 2.0: лучшие практики и изменения – Обзор лучших методик использования TensorFlow 2.0 и основные изменения платформы с переходом от 1.x к 2.x.