小编Geo*_*org的帖子

如何平均多批次的摘要?

假设我有一堆定义如下的摘要:

loss = ...
tf.scalar_summary("loss", loss)
# ...
summaries = tf.merge_all_summaries()
Run Code Online (Sandbox Code Playgroud)

我可以summaries在训练数据的每几步评估张量,并将结果传递给a SummaryWriter.结果将是嘈杂的摘要,因为它们仅在一个批次上计算.

但是,我想计算整个验证数据集的摘要.当然,我无法将验证数据集作为单个批次传递,因为它太大了.因此,我将获得每个验证批次的摘要输出.

有没有办法对这些摘要进行平均,以便看起来好像是在整个验证集上计算了摘要?

tensorflow

36
推荐指数
3
解决办法
1万
查看次数

Cordova Android插件:由cordova覆盖的config.xml准备?

我正在为Android平台开发Cordova插件.

如上所述这里,我编辑的platforms/android/res/xml/config.xml文件,包括插件的类映射.

这一切都很好,除了每次我运行cordova prepare android这个文件得到覆盖说:

Generating config.xml from defaults for platform "android"
Run Code Online (Sandbox Code Playgroud)

所以,我必须每次都撤消这个非常烦人的变化.有没有办法告诉cordova不要这样做或在其他地方插入类映射?

android cordova

16
推荐指数
2
解决办法
2万
查看次数

非确定性梯度计算

我意识到每次训练时我的模型最终会变得不同,即使我保持TensorFlow随机种子相同.

我证实了这一点:

  • 初始化是确定性的; 在第一次更新之前,权重是相同的.
  • 输入是确定性的.事实上,包括损失在内的各种正向计算在第一批中是相同的.
  • 第一批的渐变是不同的.具体来说,我正在比较的输出tf.gradients(loss, train_variables).虽然loss并且train_variables具有相同的值,但是对于一些变量,梯度有时是不同的.差异非常显着(有时单个变量的梯度的绝对差值之和大于1).

我得出结论,这是导致非确定性的梯度计算.我看了一下这个问题,当用intra_op_parallelism_thread=1和运行CPU时问题仍然存在inter_op_parallelism_thread=1.

当前向传球不是时,后向传球如何是不确定的?我怎么能进一步调试呢?

non-deterministic tensorflow

6
推荐指数
1
解决办法
1281
查看次数

使用 Tensorflow 2+ 和 tf.function 进行批量重整化

我正在尝试在我的模型中使用批量重整化,这是tf.keras.layers.BatchNormalization通过renorm_clipping参数实现的:

一个字典,可以将键 'rmax'、'rmin'、'dmax' 映射到用于剪辑 renorm 校正的标量张量。校正 (r,d) 用作 Corrected_value = normalized_value * r + d,其中 r 剪裁为 [rmin, rmax],而 d 剪裁为 [-dmax, dmax]。缺失的rmax、rmin、dmax分别设置为inf、0、inf。

然而,这个最小的代码示例在 Tensorflow 2.3.1 中失败了:

# The actual input we care about
inputs = tf.keras.Input([1])

# The current global step
step = tf.keras.Input([1])

# Compute renorm parameters from global step
rmax = 1 + step / 1000
rmin = 1 / rmax
dmax = step / 1000

# Instantiate batch norm layer …
Run Code Online (Sandbox Code Playgroud)

deep-learning keras tensorflow

6
推荐指数
0
解决办法
418
查看次数