我正尝试使用Tensorflow中的Keras和Glorot Uniform重新初始化图层权重。最接近的方法是这样:
import numpy as np
import tensorflow as tf
for layer in base_model.layers:
layer_new_weights = []
for layer_weights in layer.get_weights():
initializer = tf.compat.v1.keras.initializers.glorot_normal
weights = initializer(np.shape(layer_weights))
layer_new_weights .append(weights)
layer.set_wegiths(layer_new_weights)
有什么想法如何真正从Glorot Uniform设置权重初始化,将每层预训练模型设置为ResNet50?
谢谢!
答案 0 :(得分:0)
如果您正在keras.applications.xception或其他keras转移学习模型上进行此操作。尝试以下操作:InceptionV3(input_shape = (150, 150, 3), include_top = False, weights=None)
通过将权重设置为None(随机初始化),可以得到“重新初始化”的预训练模型。 Glorot似乎不适用于Resnet中的所有层。