卷积神经网络中的滤波器如何生成多个通道?

我正在使用Tensorflow学习卷积神经网络。

我对tf.nn.conv2d有些疑问。它的一个参数是filter

形状为[filter_height, filter_width, in_channels, out_channels]的滤波器/内核张量

我不明白out_channels的含义是什么。

假设输入图像是[1, 3, 3, 1]。所以大小是3×3,通道数是1。
然后我们有一个滤波器[2, 2, 1, 5],这意味着经过滤波后,我们将得到一个大小为2×2(“valid”填充)的图像,具有5个通道。

这5个通道是从哪里来的?根据我的理解,滤波只能生成1个通道。Tensorflow在这里使用了5个不同的滤波函数吗?


回答:

正如你所引用的,tf.nn.conv2d函数的filter参数是一个维度为[filter_height, filter_width, in_channels, out_channels]的4D张量。这个张量代表了out_channels个维度为filter_height x filter_width的滤波器堆栈,这些滤波器将应用于具有in_channels个通道的图像上。

参数filter_heightfilter_widthout_channels是由你定义的,而input_channels则取决于你输入到tf.nn.conv2d的输入数据。

换句话说,一个维度为[2, 2, 1, 5]的滤波器张量,代表了5个不同的2×2滤波器,这些滤波器将应用于一个1通道输入上,但你完全可以将其更改为[2, 2, 1, 7],或者任何其他能给你带来更好结果的设置。

为了进一步说明,以下gif展示了一个维度为[3, 3, 1, 1]的张量滤波器在[1, 5, 5, 1]的图像上进行卷积。这意味着你只有1个滤波器在图像上进行卷积。

卷积GIF

GIF来源

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注