我需要创建一个具有少量节点的简单神经网络模型,对其进行训练,然后评估结果中已经训练好的网络中的某些参数。
我需要重复几次(> 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
答案 0 :(得分:0)
您是否可以重新调整权重并使用它们而不是像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提供)在Google colab。无论有没有GPU,它都可以工作,而且我能够重新初始化网络。换句话说,我无法重现您的错误。仔细检查您是否使用了此代码,然后尝试再次运行它。
答案 1 :(得分:0)
重新启动colab并再次运行对我有用