Как изменить tf.keras, чтобы сделать класс _Merge общедоступным? - PullRequest
0 голосов
/ 11 июля 2019

В Tensorflow 1.14 я хочу иметь возможность наследовать от частного tf.keras _Merge класса для реализации пользовательского слоя _Merge во внешнем файле.

Ранее в автономных Keras яизменил содержимое файла .../keras/layers/merge.py, заменив все _Merge на Merge, например, с

class _Merge(Layer):
(...)
class Add(_Merge):

на

class Merge(Layer):
(...)
class Add(Merge):

, поскольку теперь я использую функцию tf, который вызывает tf.keras, я хочу переключиться с автономной Keras на tf.keras.Я изменил тот же файл таким же образом.Кроме того, я добавил декоратор в класс Merge, как это было сделано для классов, унаследованных от _Merge в merge.py.

@keras_export('keras.layers.Merge')
class Merge(Layer):

Также я добавил

from tensorflow.python.keras.layers.merge import Merge

в файл __init__.py, как это было сделано для других классов из merge.py.

Однако я все еще получаю ошибку импорта:

ImportError: cannot import name 'Merge' from 'tensorflow.keras.layers' (unknown location)

Я предполагаю, что Tensorflow выполняет какой-то необычный экспорт Iне знаю, может кто-нибудь объяснить мне, какие дальнейшие шаги мне нужно предпринять, чтобы сделать _Merge доступным?

1 Ответ

0 голосов
/ 23 июля 2019

Теперь, насколько мне известно, я думаю, что мне нужно перекомпилировать тензорный поток после смены источника, поскольку экспорт используется для автоматического создания файлов, из которых все впоследствии импортируется в python.

...