Как доработать модель в Керасе - PullRequest
0 голосов
/ 14 октября 2019

У меня есть простая модель, разработанная в Керасе:

....
model = Model(input, output)
model.compile(optimizer='adam', loss='categorical_crossentropy')

graph = tf.compat.v1.get_default_graph()
graph.finalize()

history = model.fit(X, y, epochs=30)

Так как я имею дело с некоторыми проблемами утечки памяти, мне кажется хорошей идеей завершить график, чтобы предотвратить упомянутую проблему. Но когда я это делаю, я получаю исключение RuntimeError: Graph is finalized and cannot be modified.:

Traceback (most recent call last):
  File "./train.py", line 43, in <module>
    history = model.fit(X, y, epochs=30)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py", line 780, in fit
    steps_name='steps_per_epoch')
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training_arrays.py", line 157, in model_iteration
    f = _make_execution_function(model, mode)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training_arrays.py", line 532, in _make_execution_function
    return model._make_execution_function(mode)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py", line 2276, in _make_execution_function
    self._make_train_function()
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py", line 2212, in _make_train_function
    if not isinstance(K.symbolic_learning_phase(), int):
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/backend.py", line 299, in symbolic_learning_phase
    False, shape=(), name='keras_learning_phase')
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/array_ops.py", line 2159, in placeholder_with_default
    return gen_array_ops.placeholder_with_default(input, shape, name)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/gen_array_ops.py", line 6406, in placeholder_with_default
    "PlaceholderWithDefault", input=input, shape=shape, name=name)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/op_def_library.py", line 527, in _apply_op_helper
    preferred_dtype=default_dtype)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py", line 1224, in internal_convert_to_tensor
    ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant_op.py", line 305, in _constant_tensor_conversion_function
    return constant(v, dtype=dtype, name=name)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant_op.py", line 246, in constant
    allow_broadcast=True)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant_op.py", line 290, in _constant_impl
    name=name).outputs[0]
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/deprecation.py", line 507, in new_func
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py", line 3588, in create_op
    self._check_not_finalized()
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py", line 3225, in _check_not_finalized
    raise RuntimeError("Graph is finalized and cannot be modified.")
RuntimeError: Graph is finalized and cannot be modified.

В этой модели нет ничего особенного, все слои взяты из библиотеки Keras. И я использую Tensorflow 1.14 и прилагаемые к нему Keras (tensorflow.keras).

Мой вопрос: какие у меня есть варианты? Как я могу точно определить причину изменения графика? Или, может быть, я неправильно завершаю график!?

[ОБНОВЛЕНИЕ]

Чтобы убедиться, что проблема не в моей установке и модели, я последовал примерупредоставляется в Документах Tensorflow (следуйте по ссылке Colab ). Я просто добавил две строки кода, чтобы завершить график непосредственно перед вызовом метода fit. И я столкнулся с той же ошибкой. Итак, мой вопрос стоит, как вы доработаете модель в Керасе?

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