tensorflow - 内核大小为1的conv1d与密集层之间有什么区别?

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

我正在使用Conv1D图层构建CNN,并且训练得很好。我现在正在研究如何在将特征输入到模型末尾的Dense层之前减少特征的数量,因此我一直在减小Dense层的大小,但是后来遇到this article。本文讨论了使用带有kernel_size =(1,1)的Conv2D过滤器来减少功能数量的效果。

我想知道使用带有kernel_size =(1,1)tf.keras.layers.Conv2D(filters=n,kernel_size=(1,1))的Conv2D层和使用相同大小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层应用于其输入的最后一个维度(请参阅this answer),所以就连接和可训练参数的数量而言,Dense(units=N)Conv1D(filters=N, kernel_size=1)(或Dense(units=N)Conv2D(filters=N, kernel_size=1))基本上彼此等效。

关于tensorflow - 内核大小为1的conv1d与密集层之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57526932/

相关文章:

python - 在keras中拆分图层的输出

tensorflow - 如何解释损失和准确性的增加

python - 如何更改 TensorFlow 中非 tf.Variable 的张量的值?

python - tensorflow 回归神经网络对所有内容输出相同的数字

tensorflow - Keras, tensorflow : Initializer for variable. .. 来自控制流结构、循环或条件

c# - Encog C# RBF网络,如何启动?

machine-learning - 用于聚类任务的多标签分类 "weighted labels"

python - 简单的 Tensorflow 示例在 Jupyter Notebook 中不起作用

python - 对两个均为实数的张量求和时的 NaN 结果

deep-learning - 如何在使用内置数据集的同时在 keras 中输入新文本进行预测