微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

可重复结果的种子不起作用Tensorflow

如何解决可重复结果的种子不起作用Tensorflow

我遇到了一个问题,与使用 Tensorflow (v1.15.3) 的结果的可重复性有关。我设置了所有种子(os、random、numpy 和 tensorflow),但卷积神经网络的结果总是在执行之间发生变化(即使相似)。

我是这样播种的:

seed_value = 1234

import os
os.environ['PYTHONHASHSEED'] = str(seed_value)
import random
random.seed(seed_value)
import numpy as np
np.random.seed(seed_value)
import tensorflow as tf
tf.compat.v1.set_random_seed(seed_value)
tf.set_random_seed(seed_value)

接下来我像这样定义网络的权重:

weights = {
    'conv1/conv2d': tf.get_variable('conv1/weights',shape=[3,3,512,1024],initializer=tf.contrib.layers.xavier_initializer()),# and more ...
}

(如果我使用或不使用权重的初始化程序,事情不会改变)

之后,我使用之前初始化的权重定义了带有卷积操作的图(我省略了这一点,因为在 Tensorflow 中无法将种子设置为 tf.nn.Conv2d 操作,并且因为只有权重是动态部分可能影响结果的模型)。

知道如何在使用 Tensorflow 以这种方式定义模型后始终获得相同的结果吗?

谢谢。

解决方法

我建议,之后

weights = {
    'conv1/conv2d': tf.get_variable('conv1/weights',shape=[3,3,512,1024],initializer=tf.contrib.layers.xavier_initializer()),# and more ...
}

例如,将重量外部存储在文件中,然后下次运行时,不要通过前一行并从外部文件加载重量。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。