Как я могу использовать ResNeXt Keras.applications в энергичном исполнении TensorFlow? - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь получить ResNet101 или ResNeXt, которые по некоторым причинам доступны только в хранилище Keras, из приложений Keras в TensorFlow 1.10:

import tensorflow as tf
from keras import applications

tf.enable_eager_execution()

resnext = applications.resnext.ResNeXt101(include_top=False, weights='imagenet', input_shape=(SCALED_HEIGHT, SCALED_WIDTH, 3), pooling=None)

Однако это приводит к:

Traceback (most recent call last):
  File "myscript.py", line 519, in get_fpn
    resnet = applications.resnet50.ResNet50(include_top=False, weights='imagenet', input_shape=(SCALED_HEIGHT, SCALED_WIDTH, 3), pooling=None)
  File "Keras-2.2.4-py3.5.egg/keras/applications/__init__.py", line 28, in wrapper
    return base_fun(*args, **kwargs)
  File "Keras-2.2.4-py3.5.egg/keras/applications/resnet50.py", line 11, in ResNet50
    return resnet50.ResNet50(*args, **kwargs)
  File "Keras_Applications-1.0.8-py3.5.egg/keras_applications/resnet50.py", line 214, in ResNet50
    img_input = layers.Input(shape=input_shape)
  File "Keras-2.2.4-py3.5.egg/keras/engine/input_layer.py", line 178, in Input
    input_tensor=tensor)
  File "Keras-2.2.4-py3.5.egg/keras/legacy/interfaces.py", line 91, in wrapper
    return func(*args, **kwargs)
  File "Keras-2.2.4-py3.5.egg/keras/engine/input_layer.py", line 87, in __init__
    name=self.name)
  File "Keras-2.2.4-py3.5.egg/keras/backend/tensorflow_backend.py", line 529, in placeholder
    x = tf.placeholder(dtype, shape=shape, name=name)
  File "tensorflow/python/ops/array_ops.py", line 1732, in placeholder
    raise RuntimeError("tf.placeholder() is not compatible with "
RuntimeError: tf.placeholder() is not compatible with eager execution.

Я установил Keras из его основной ветки GitHub, так как pip устанавливает Keras и API-интерфейс Keras TensorFlow по какой-то странной причине не включает ResNet101, ResNetv2, ResNeXt и т. Д. Кто-нибудь знает, как я могу запускать такие модели (предпочтительно ResNeXt) в нетерпеливом исполнении TensorFlow?

1 Ответ

1 голос
/ 23 июня 2019

Как указывает ошибка, tf.placeholder (), который используется в качестве заполнителя для подачи данных в сеанс tf с использованием feed_dict, несовместим с активным режимом.

Эта ссылка хорошо объясняет это на примере: https://github.com/tensorflow/tensorflow/issues/18165#issuecomment-377841925

Для этой цели вы можете использовать модели из tf.keras.applications.Я пробовал с бета-версией TF2.0.

https://www.tensorflow.org/beta/tutorials/images/transfer_learning#create_the_base_model_from_the_pre-trained_convnets

import tensorflow as tf
resnext = tf.keras.applications.ResNeXt50(weights=None)
print(tf.executing_eagerly())

True

Модели ResNeXt недоступны (мне пришлось внести некоторые изменения, такие как копированиеresnext.py из keras / Applications в tenorflow / python / keras / Applications и изменения в __init__.py и т. д.), но вы можете попробовать использовать существующие модели, такие как ResNet50, если они работают, вы можете попробовать портировать ResNeXt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...