首页 > 解决方案 > 这个 TensorFlow 示例中的过滤图像数据在哪里?

问题描述

我正在尝试使用 Google 的本教程来使用 TensorFlow Estimator 来训练和识别图像:https ://www.tensorflow.org/tutorials/estimators/cnn

我在教程中可以看到的数据是:train_data、train_labels、eval_data、eval_labels

((train_data,train_labels),(eval_data,eval_labels)) = 
tf.keras.datasets.mnist.load_data();

在卷积层中,应该有特征过滤图像数据与输入图像数据相乘?但我没有在代码中看到它们

从本指南开始,输入图像数据 matmul 与过滤图像数据以检查低级特征(曲线、边缘等),所以也应该有过滤图像数据(下图中的右侧矩阵)?https ://adeshpande3.github.io/A-Beginner%27s-Guide-To-Understanding-Convolutional-Neural-Networks

在此处输入图像描述

标签: tensorflowmachine-learningartificial-intelligenceconv-neural-networksample

解决方案


过滤器是模型中使用的层的权重矩阵Conv2d,而不是像您在示例中给出的“对接曲线”那样的预加载图像。如果是这种情况,我们需要为 CNN 提供所有可能类型的形状、曲线、颜色,并希望我们提供给模型的任何看不见的数据都包含模型可以识别的有限图像集。

相反,我们允许 CNN 从数据本身中学习成功分类所需的过滤器,并希望它可以泛化到新数据。通过大量迭代和数据(它们需要大量数据),该模型迭代地制作最佳过滤器集,以成功对图像进行分类。训练开始时的随机初始化确保每层的所有过滤器都学会识别输入图像中的不同特征。

较早的层通常对应于颜色和边缘(如上)这一事实没有预先定义,但网络已经意识到在输入中寻找边缘是在图像的其余部分中创建上下文的唯一方法,从而分类(人类最初做同样的事情)。

网络在较早的层中使用这些原始过滤器在更深的层中生成更复杂的解释。这就是分布式学习的力量:通过简单得多的函数的多次应用来表示复杂的函数。


推荐阅读