我需要用少量的节点创建一个简单的神经网络模型,对其进行训练,然后评估得到的已经训练好的网络中的某些参数。
我需要重复几次(>100)。因此,我只想重新初始化权重,而不是每次都创建一个新模型。
以下是我的代码中有问题的部分:
import tensorflow as tf
from tensorflow import keras
from keras import backend as K
def reinitLayers(model):
session = K.get_session()
for layer in model.layers:
if isinstance(layer,keras.engine.network.Network):
reinitLayers(layer)
....这就是我所得到的:
"module 'tensorflow._api.v1.keras' has no attribute 'engine'"然而,存在keras.engine:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/python/keras/engine
非常类似的问题是这个:AttributeError: module 'keras.engine' has no attribute 'input_layer',然而,那里的答案对我没有帮助。
这里描述了同样的问题,但是那里的线程也没有帮助:https://github.com/keras-team/keras/issues/341
发布于 2019-03-20 21:04:12
您能不能不重新洗牌权重并使用它们,而不是像https://github.com/keras-team/keras/issues/341中提到的那样重新初始化?这有什么问题呢?
更新
我运行了以下代码
def reinitLayers(model):
session = K.get_session()
for layer in model.layers:
if isinstance(layer, keras.engine.network.Network):
reinitLayers(layer)
continue
print("LAYER::", layer.name)
for v in layer.__dict__:
v_arg = getattr(layer,v)
if hasattr(v_arg,'initializer'):
initializer_method = getattr(v_arg, 'initializer')
initializer_method.run(session=session)
print('reinitializing layer {}.{}'.format(layer.name, v))(在https://github.com/keras-team/keras/issues/341#issuecomment-423637768上)。它在有GPU和没有GPU的情况下都可以工作,并且我能够重新初始化网络。换句话说,我不能重现你的错误。仔细检查您是否使用了此代码,然后再次尝试运行它。
发布于 2020-04-21 14:03:41
重新启动colab并再次运行对我有效
https://stackoverflow.com/questions/55252162
复制相似问题