tensorflow - 这个 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
解决方案
过滤器是模型中使用的层的权重矩阵Conv2d
,而不是像您在示例中给出的“对接曲线”那样的预加载图像。如果是这种情况,我们需要为 CNN 提供所有可能类型的形状、曲线、颜色,并希望我们提供给模型的任何看不见的数据都包含模型可以识别的有限图像集。
相反,我们允许 CNN 从数据本身中学习成功分类所需的过滤器,并希望它可以泛化到新数据。通过大量迭代和数据(它们需要大量数据),该模型迭代地制作最佳过滤器集,以成功对图像进行分类。训练开始时的随机初始化确保每层的所有过滤器都学会识别输入图像中的不同特征。
较早的层通常对应于颜色和边缘(如上)这一事实没有预先定义,但网络已经意识到在输入中寻找边缘是在图像的其余部分中创建上下文的唯一方法,从而分类(人类最初做同样的事情)。
网络在较早的层中使用这些原始过滤器在更深的层中生成更复杂的解释。这就是分布式学习的力量:通过简单得多的函数的多次应用来表示复杂的函数。
推荐阅读
- c++ - 如何创建一个从一个 QTreeWidget 中删除项目并将其添加到另一个的函数?
- c - C 中的 `restrict` 限定符能否帮助查找由于重叠块而导致的错误?
- clang - clang 库的导入顺序
- apache-kafka - 无法从 Kafka 0.8.2.2 升级到 0.10.0.0
- c++ - c++ 在不使用全局变量的情况下捕获 ctrl+c
- python - Beautiful Soup 获得 td 类的数量
- python - 我怎样才能使游戏中的每个“金币”都引用 Python 迷宫游戏中的不同问题?
- powerbi - 如何在层次结构中汇总孩子的百分比?
- amazon-web-services - 从 kubernetes pod 获取 HTTP 请求日志?(运行 JupyterHub)
- javascript - 同一服务器上的相同文件。每个域的加载速度不同。为什么?