Arhn - архитектура программирования

Keras и TensorBoard - AttributeError: объект 'Sequential' не имеет атрибута '_get_distribution_strategy'

Я использую keras и пытаюсь построить журналы с помощью тензорной доски. Ниже вы можете найти ошибку, которую я получаю, а также список версий пакетов, которые я использую. Я не могу понять, что это дает мне ошибку: объект «Последовательный» не имеет атрибута «_get_distribution_strategy».

Пакет: Keras 2.3.1 Keras-Applications 1.0.8 Keras-Preprocessing 1.1.0 tensorboard 2.1.0 tensorflow 2.1.0 tensorflow-Estimator 2.1.0

МОДЕЛЬ:

model = Sequential()
    model.add(Embedding(MAX_NB_WORDS, EMBEDDING_DIM, input_shape=(X.shape[1],)))
    model.add(GlobalAveragePooling1D())
    #model.add(Dense(10, activation='sigmoid'))
    model.add(Dense(len(CATEGORIES), activation='softmax'))
    model.summary()
    #opt = 'adam'       # Here we can choose a certain optimizer for our model
    opt = 'rmsprop'
    model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])                  # Here we choose the loss function, input our optimizer choice, and set our metrics.

    # Create a TensorBoard instance with the path to the logs directory
    tensorboard = TensorBoard(log_dir='logs/{}'.format(time()),
                    histogram_freq = 1,
                    embeddings_freq = 1,
                    embeddings_data = X)

    history = model.fit(X, Y, epochs=epochs, batch_size=batch_size, validation_split=0.1, callbacks=[tensorboard])

ОШИБКА:

C:\Users\Bruno\AppData\Local\Programs\Python\Python37\lib\site-packages\keras\callbacks\tensorboard_v2.py:102: UserWarning: The TensorBoard callback does not support embeddings display when using TensorFlow 2.0. Embeddings-related arguments are ignored.
  warnings.warn('The TensorBoard callback does not support '
C:\Users\Bruno\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\framework\indexed_slices.py:433: UserWarning: Converting sparse IndexedSlices to a dense Tensor of unknown shape. This may consume a large amount of memory.
  "Converting sparse IndexedSlices to a dense Tensor of unknown shape. "
Train on 1123 samples, validate on 125 samples
Traceback (most recent call last):
  File ".\NN_Training.py", line 128, in <module>
    history = model.fit(X, Y, epochs=epochs, batch_size=batch_size, validation_split=0.1, callbacks=[tensorboard])    # Feed in the train
set for X and y and run the model!!!
  File "C:\Users\Bruno\AppData\Local\Programs\Python\Python37\lib\site-packages\keras\engine\training.py", line 1239, in fit
    validation_freq=validation_freq)
  File "C:\Users\Bruno\AppData\Local\Programs\Python\Python37\lib\site-packages\keras\engine\training_arrays.py", line 119, in fit_loop
    callbacks.set_model(callback_model)
  File "C:\Users\Bruno\AppData\Local\Programs\Python\Python37\lib\site-packages\keras\callbacks\callbacks.py", line 68, in set_model
    callback.set_model(model)
  File "C:\Users\Bruno\AppData\Local\Programs\Python\Python37\lib\site-packages\keras\callbacks\tensorboard_v2.py", line 116, in set_model
    super(TensorBoard, self).set_model(model)
  File "C:\Users\Bruno\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\keras\callbacks.py", line 1532, in
set_model
    self.log_dir, self.model._get_distribution_strategy())  # pylint: disable=protected-access
AttributeError: 'Sequential' object has no attribute '_get_distribution_strategy'```

Ответы:


1

Вы смешиваете импорт между keras и tf.keras, это разные библиотеки, и это не поддерживается.

Вы должны выполнить весь импорт из одной из библиотек, keras или tf.keras.

24.01.2020
  • Я использую следующий импорт: из keras.preprocessing.text import Tokenizer, из keras.preprocessing.sequence import pad_sequences, из keras.models import Sequential, из keras.layers import Dense, Embedding, GlobalAveragePooling1D, из модели импорта keras.models, load_model, из keras.callbacks импортируйте TensorBoard. Я думаю, все они исходят от keras и не смешивают никаких библиотек. 24.01.2020
  • @BrunoTaborda В вашей трассировке указано иное, поскольку в конце происходит переход от keras к tf.keras, возможно, вы можете добавить скрипт, который мы можем запустить и воспроизвести проблему. 24.01.2020
  • К сожалению, я не могу ... есть ли способ просто заставить его использовать keras, а не tf.keras? 24.01.2020
  • @BrunoTaborda Извините, без кода невозможно сказать. 24.01.2020
  • В качестве окончательного решения я изменил свой импорт с keras на tf.keras, это сработало. 24.01.2020
  • В моем случае комментарий: from tensorflow.keras.models import Sequential и его замена на: import tensorflow Затем для создания модели: model = tensorflow.keras.Sequential() сработало как шарм! 24.06.2021

  • 2

    Кажется, что ваша среда Python смешивает импорт из keras и tensorflow.keras. Попробуйте использовать модуль Sequential следующим образом:

    model = tensorflow.keras.Sequential()
    

    Или измените свой импорт на что-то вроде

    import tensorflow
    layers = tensorflow.keras.layers
    BatchNormalization = tensorflow.keras.layers.BatchNormalization
    Conv2D = tensorflow.keras.layers.Conv2D
    Flatten = tensorflow.keras.layers.Flatten
    TensorBoard = tensorflow.keras.callbacks.TensorBoard
    ModelCheckpoint = tensorflow.keras.callbacks.ModelCheckpoint
    

    ...так далее

    16.03.2020
  • Я прокомментировал: from tensorflow.keras.models import Sequential и заменил его на: import tensorflow Затем, чтобы создать свою модель, я сделал, как вы сказали: model = tensorflow.keras.Sequential() работал как шарм! 24.06.2021
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..