为了账号安全,请及时绑定邮箱和手机立即绑定

Tensorflow:在 CPU 中运行时 AdamOptimizer 的确定性

Tensorflow:在 CPU 中运行时 AdamOptimizer 的确定性

慕姐8265434 2021-08-05 17:28:43
在我的应用程序中,我使用 apply_gradient() 和 AdamOptimizer 优化了一个神经网络。我注意到每次运行我的应用程序时我都无法准确地重现结果,并且需要它来比较结果。在搜索类似问题时,我注意到在 GPU 中运行 Tensorflow 时可能会遇到不确定性问题,但即使在 CPU 中也会出现我的问题。我简化了我的代码,我认为问题在于 apply_gradients,但我不确定,因为我对 tensorflow 没有经验。下面的代码用随机数据训练一个神经网络(当然还有一个正确播种的 numpy),并将网络的参数写入日志文件。如果您两次运行该程序,您会注意到程序不同运行之间网络参数的显着差异,即使训练数据相同。我使用 Tensorflow 1.11.0为什么会发生这种情况?可能是由于算术精度错误还是我做错了什么?import tensorflow as tfimport numpy as npimport loggingimport sysimport mathimport datetimeif __name__ == '__main__':    # Just configure logging    logging.basicConfig(filename='example.log', filemode='w', level=logging.DEBUG)    logging.debug('Python version: %s', sys.version)    logging.debug('Tensorflow version: %s', tf.__version__)    logging.debug('Date time: %s', datetime.datetime.now())    # Seed everything    randomseed = 999    np.random.seed(randomseed)    tf.set_random_seed(randomseed)    # Create a Neural Network    inputs = tf.placeholder(tf.float64, [None, 10])    hidden_dims = [100, 200]    net = inputs    for dim in hidden_dims:        weight_initializer = tf.initializers.random_uniform(minval= - 1 / math.sqrt(10), maxval = 1 / math.sqrt(10))        net = tf.layers.dense(inputs=net, units=dim, kernel_initializer=weight_initializer, bias_initializer=weight_initializer)        net = tf.layers.batch_normalization(inputs=net)        net = tf.nn.relu(net)    weight_initializer = tf.initializers.random_uniform(minval=-3e-3, maxval=3e-3)    net = tf.layers.dense(inputs=net, units=20, kernel_initializer= weight_initializer, bias_initializer= weight_initializer)    out = tf.nn.tanh(net)    net_params = tf.trainable_variables()    # Define some gradient ops    grad = tf.gradients(out, net_params)    gradients = list(map(lambda x: tf.div(x, 10), grad))    optimizer = tf.train.AdamOptimizer(learning_rate=1e-4).apply_gradients(zip(gradients, net_params))
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 235 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号