Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 虚拟批处理范数的两种实现导致两种不同的结果 介绍性问题:_Python_Tensorflow_Tensorflow Gpu_Batch Normalization_Tensorflow Xla - Fatal编程技术网

Python 虚拟批处理范数的两种实现导致两种不同的结果 介绍性问题:

Python 虚拟批处理范数的两种实现导致两种不同的结果 介绍性问题:,python,tensorflow,tensorflow-gpu,batch-normalization,tensorflow-xla,Python,Tensorflow,Tensorflow Gpu,Batch Normalization,Tensorflow Xla,两个示例代码是否都会导致不同的培训行为(任何损失/任何优化器) 我的真实案例场景: 我正在尝试实现虚拟批处理规范,我有两个实现,它们的行为方式不同,这是受。这里显示的两个实现都经过了简化,以保留它们之间的差异 第一次实施: 一切似乎都很顺利,验证和培训的准确性都在提高,损失也在减少 第二次实施 在这里,只有训练收敛(但曲线与第一次实现略有不同),而验证损失增加,准确性停留在随机猜测中 作为细节,我使用GPU,TysFooS1.2.1,XLA使能。 知道我做错了什么吗 编辑: 因此,我尝试比较两个

两个示例代码是否都会导致不同的培训行为(任何损失/任何优化器)

我的真实案例场景: 我正在尝试实现虚拟批处理规范,我有两个实现,它们的行为方式不同,这是受。这里显示的两个实现都经过了简化,以保留它们之间的差异

第一次实施: 一切似乎都很顺利,验证和培训的准确性都在提高,损失也在减少

第二次实施 在这里,只有训练收敛(但曲线与第一次实现略有不同),而验证损失增加,准确性停留在随机猜测中

作为细节,我使用GPU,TysFooS1.2.1,XLA使能。 知道我做错了什么吗

编辑: 因此,我尝试比较两个输出模型,并查看梯度(使用compute_梯度),为了避免权重(然后是梯度)共享,我在两个不同的范围内构建了模型,并在两个模型上分别加载相同的权重(来自先前训练的模型)

如果我只使用以下命令,则输出相同:

sess.run([model.outputs, model2.outputs])
但如果我同时使用以下方法查看渐变(Optimizer.compute_gradients(loss))时每个元组返回的第一个元素:

sess.run([model.outputs, model2.outputs, grads])
突然之间,模型输出不同。。。仅通过查看渐变而不使用apply_渐变,模型输出如何变化?此外,它似乎没有改变重量,因为如果我在跑步:

sess.run(grads)
sess.run([model.outputs, model.outputs2])

模型输出仍然是相同的…

< P> OK,XLA似乎是BGGY,因为在禁用XLA之后,我得到了一致的结果。看来XLA在第二个实现中无法处理一些……/P> 稍后,我将在存储库中提出一个问题,“计算梯度”修改输出尤其令人不安

sess.run([model.outputs, model2.outputs])
sess.run([model.outputs, model2.outputs, grads])
sess.run(grads)
sess.run([model.outputs, model.outputs2])