我想从头开始重新训练 Keras 模型 Inception_v3。该模型在这里定义: https ://github.com/keras-team/keras-applications/blob/master/keras_applications/inception_v3.py看了一些帖子,列出的解决方案是:冻结图层(这不是我想要的......)for layer in model.layers: layer.trainable = Falsehttps://stackoverflow.com/a/51727616/7748163通过检查初始化器来重置所有层:def reset_weights(model): session = K.get_session() for layer in model.layers: if hasattr(layer, 'kernel_initializer'): layer.kernel_initializer.run(session=session) if hasattr(layer, 'bias_initializer'): layer.bias_initializer.run(session=session) 采用tf.variables_initializer model = InceptionV3() for layer in model.layers: sess.run(tf.variables_initializer(layer.weights))参考:https ://stackoverflow.com/a/56634827/7748163我认为最好的一个,但它引发了一个错误。sess = tf.Session()for layer in model.layers: 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=sess) print('reinitializing layer {}.{}'.format(layer.name, v))但是,它们都不适用于 Inception_v3。错误信息适用于 BatchNorm 层:tensorflow.python.framework.errors_impl.FailedPreconditionError: Error while reading resource variable batch_normalization_9/moving_mean from Container: localhost. This could mean that the variable was uninitialized. Not found: Resource localhost/batch_normalization_9/moving_mean/N10tensorflow3VarE does not exist. [[{{node batch_normalization_9_1/AssignMovingAvg/ReadVariableOp}}]] [[metrics_1/categorical_accuracy/Identity/_469]]那么,如何重新训练现有的 Keras 模型,并初始化变量呢?从 Keras 应用程序重新训练模型的最佳实践是什么?进一步讨论:https://github.com/keras-team/keras/issues/341
1 回答
添加回答
举报
0/150
提交
取消
