TensorFlow Keras初始化器设置seed无法保证结果复现的问题咨询
问题解答
这是预期行为,既不是Bug,也和安装无关。
原因说明:
TensorFlow Keras初始化器的seed参数作用是保证同一个初始化器实例的多次调用能生成可复现的随机序列,但并不保证**不同实例(即使seed相同)**生成相同的序列。
每个初始化器实例会维护独立的随机状态,当你创建多个相同seed的初始化器时,它们会基于该seed和内部的随机状态计数器生成不同的初始随机序列。这就导致同脚本内两次实例化的初始化器生成结果不同,但每次完整运行脚本时,全局随机状态的初始值固定,所以每个实例的输出会保持一致。
如果需要让不同初始化器实例生成完全相同的随机序列,你需要设置TensorFlow的全局随机种子:
import tensorflow as tf tf.random.set_seed(123) # 全局种子控制所有随机生成逻辑 initializer = tf.keras.initializers.GlorotNormal() values = initializer(shape=(2, 2)) print(values) initializer1 = tf.keras.initializers.GlorotNormal() values1 = initializer1(shape=(2, 2)) print(values1)
此时两个初始化器实例的输出会完全一致。
内容的提问来源于stack exchange,提问作者user17788510
相关产品推荐
相关产品推荐

