如何定义自动编码器使用的初始权重?

时间:2019-06-28 07:44:52

标签: python machine-learning keras neural-network autoencoder

当我使用一组固定的参数多次运行自动编码器时,在准确性和其他指标上会有不同的结果。我想这是因为最初神经网络选择随机权重。 我希望结果总是一样。我可以修改权重的随机选择吗?如何使结果具有确定性而不是随机性?

2 个答案:

答案 0 :(得分:2)

您需要设置种子

我通常使用以下简单功能

def keras_seeding(seednum):
    np.random.seed(seednum)
    from tensorflow import set_random_seed
    set_random_seed(seednum)
    random.seed(seednum)
    os.environ['PYTHONHASHSEED'] = str(seednum)

seednum=1123
keras_seeding(seednum)

答案 1 :(得分:0)

如果使用Keras,则在每一层都可以提及重量初始化器。您可以在this链接中了解有关各种类型的初始化程序的更多信息。

Example : 

model = Sequential()
model.add(Conv2D(64,(3,3),kernel_initializer="he_normal"))
model.add(Dense(10,kernel_initializer='ones'))

我刚刚在这里提到了示例初始化程序。寻找最适合您的情况的一种。