Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 如何在Keras中最终确定模型_Tensorflow_Keras - Fatal编程技术网

Tensorflow 如何在Keras中最终确定模型

Tensorflow 如何在Keras中最终确定模型,tensorflow,keras,Tensorflow,Keras,我在Keras中开发了一个简单的模型: .... 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) 因为我正在处理一些内存泄漏问题,所以完成图表以防止出现上述问题似乎

我在Keras中开发了一个简单的模型:

....
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:图形已完成,无法修改。

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.
回溯(最近一次呼叫最后一次):
文件“/train.py”,第43行,在
历史=model.fit(X,y,epochs=30)
文件“/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py”,第780行,适合
步骤(名称=“每个时代的步骤”)
文件“/usr/local/lib/python3.6/dist packages/tensorflow/python/keras/engine/training\u arrays.py”,第157行,在模型迭代中
f=_生成_执行_函数(模型、模式)
文件“/usr/local/lib/python3.6/dist packages/tensorflow/python/keras/engine/training\u arrays.py”,第532行,在“make\u execution”函数中
返回模式。生成执行功能(模式)
文件“/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py”,第2276行,在函数make\u execution\u中
self.\u make\u train\u function()
文件“/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py”,第2212行,在函数中
如果不存在(K.符号学习阶段(),int):
文件“/usr/local/lib/python3.6/dist packages/tensorflow/python/keras/backend.py”,第299行,处于符号学习阶段
False,shape=(),name='keras\u learning\u phase')
文件“/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/array_ops.py”,第2159行,在带有默认值的占位符_中
返回带有默认值(输入、形状、名称)的gen\u数组\u ops.placeholder\u
文件“/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/gen_-array_-ops.py”,第6406行,占位符_中带有默认值
“占位符WithDefault”,输入=输入,形状=形状,名称=名称)
文件“/usr/local/lib/python3.6/dist packages/tensorflow/python/framework/op_def_library.py”,第527行,在“应用”和“操作”帮助程序中
首选类型(默认类型)
文件“/usr/local/lib/python3.6/dist packages/tensorflow/python/framework/ops.py”,第1224行,在内部转换为tensor
ret=conversion\u func(值,dtype=dtype,name=name,as\u ref=as\u ref)
文件“/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant\u op.py”,第305行,在常量张量转换函数中
返回常量(v,dtype=dtype,name=name)
文件“/usr/local/lib/python3.6/dist packages/tensorflow/python/framework/constant_op.py”,第246行,常量
允许(广播=真)
文件“/usr/local/lib/python3.6/dist packages/tensorflow/python/framework/constant_op.py”,第290行,在常量impl中
名称=名称)。输出[0]
文件“/usr/local/lib/python3.6/dist packages/tensorflow/python/util/deprecation.py”,第507行,在new_func中
返回函数(*args,**kwargs)
文件“/usr/local/lib/python3.6/dist packages/tensorflow/python/framework/ops.py”,第3588行,在create_op中
self.\u check\u not\u finalized()
文件“/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py”,第3225行,在“检查”中未完成
raise RUNTIMERROR(“图形已完成,无法修改”)
RuntimeError:图形已完成,无法修改。
在这个模型中没有定制,所有的层都来自Keras库。我使用的是Tensorflow 1.14及其附带的Keras(
Tensorflow.Keras

我的问题是,我的选择是什么?我怎样才能确定图表变化的原因?或者也许我把图表定错了

[更新]


为了确保问题不在我的设置和型号上,我遵循了(follow)中提供的示例。在调用fit方法之前,我刚刚添加了两行代码来完成图形。我也面临同样的错误。所以我的问题是,如何在Keras中完成一个模型?

也许Keras在您在
model.compile()
方法中完成图形之前就完成了它?正如您所看到的,fit()方法间接地使用了引发异常的_check\u not_finalized()方法。这是因为如果我没有出错,fit()方法实际上会修改tf图。当我对并发predict()使用finalize()方法时,我首先必须运行一个伪predict(),让它修改图形,然后finalize()完成图形,最后启动其他线程,一旦图形完成。尝试相同的方法:首先运行一个虚拟fit(),完成()图形,然后开始处理它。