小编Mic*_*ela的帖子

conv1d with kernel_size=1 和dense layer有什么区别?

我正在构建一个带有 Conv1D 层的 CNN,它训练得很好。我现在正在研究如何在将其输入到模型末尾的 Dense 层之前减少特征数量,因此我一直在减少 Dense 层的大小,但后来我看到了这篇文章。文章讨论了使用具有 kernel_size=(1,1) 的 Conv2D 过滤器来减少特征数量的效果。

我想知道使用带有 kernel_size=(1,1) 的 Conv2D 层tf.keras.layers.Conv2D(filters=n,kernel_size=(1,1))和使用相同大小的 Dense 层有什么区别tf.keras.layers.Dense(units=n)?从我的角度来看(我对神经网络相对较新),kernel_size=(1,1) 的过滤器是一个单一的数字,它本质上等同于 Dense 层中的权重,并且两个层都有偏差,所以它们是等价的,还是我误解了什么?如果我的理解是正确的,在我使用 Conv1D 层而不是 Conv2D 层的情况下,这会改变什么吗?作为是tf.keras.layers.Conv1D(filters=n, kernel_size=1)相当于tf.keras.layers.Dense(units=n)

如果您需要我提供任何信息来澄清问题,请告诉我。我最好奇的是,kernel_size=1 的 Conv1D 层和 kernel_size=(1,1) 的 Conv2D 层的行为是否与 Dense 层不同。

neural-network conv-neural-network keras tensorflow tf.keras

5
推荐指数
1
解决办法
1856
查看次数

tf.keras.backend 和 tensorflow 库中的冗余

我已经在 TensorFlow 工作了大约一年,我正在从 TF 1.x 过渡到 TF 2.0,我正在寻找有关如何tf.keras.backend在 TF 2.0 中使用该库的一些指导。我知道过渡到 TF 2.0 应该消除建模和构建图的大量冗余,因为在早期的 TensorFlow 版本中有很多方法可以创建等效层(我非常感谢这种变化!),但我一直在理解何时使用tf.keras.backend,因为这些操作对于其他 TensorFlow 库来说似乎是多余的。

我发现其中的一些函数tf.keras.backend与其他 TensorFlow 库是多余的。例如,tf.keras.backend.abstf.math.abs不是别名(或者至少,它们没有在文档中列为别名),但都取张量的绝对值。查了一下源码,貌似tf.keras.backend.abs调用了tf.math.abs函数,所以我真的不明白为什么它们不是别名。其他tf.keras.backend操作在 TensorFlow 库中似乎没有重复,但看起来有 TensorFlow 函数可以做等效的事情。例如,只要您明确指定 dtype ,tf.keras.backend.cast_to_floatx就可以替换tf.dtypes.cast为。我想知道两件事:

  1. 什么时候最好使用tf.keras.backend库而不是等效的 TensorFlow 函数?
  2. tf.keras.backend我缺少的这些功能(和其他等效功能)有什么不同吗?

tensorflow tf.keras tensorflow2.0

5
推荐指数
1
解决办法
749
查看次数