首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用tensorflow扫描神经网络?

如何用tensorflow扫描神经网络?
EN

Stack Overflow用户
提问于 2018-11-21 11:16:51
回答 1查看 250关注 0票数 2

我的问题是如何在tensorflow (1.4)中找到一种高效(主要是参数计数)的方法来实现滑动窗口,以便在图像中应用一个神经网络,并生成一个二维映射,每个像素(或区域)表示对应的接收字段(在这种情况下是滑动窗口本身)的网络输出。

实际上,我试图使用tensorflow实现MTANNPatchGAN,但我无法理解我找到的实现。

这两种架构可以简单地描述为:

  • MTANN:将输入大小为1,N,N,1和输出大小为1,M,M,1的线性神经网络应用于1,M,M,1的图像,生成1,G,G,1大小的映射,其中生成的映射的每个像素对应于对应的NxN贴片属于某一类的可能性。
  • PatchGAN鉴别器:更通用的体系结构,因为我可以理解跨越图像的网络输出一个映射本身,而不是一个值,然后将该值与相邻的映射组合,生成最终的地图。

虽然我找不到MTANN的任何tensorflow实现,但我找到了PatchGAN 实现,也就是被认为是卷积网络,但是我不知道如何在实践中实现这一点。

假设我有一个预先训练过的网络,我得到输出张量。我知道卷积是可行的,因为卷积层在输入的局部区域上工作,我想要做的事情可以清楚地表示为卷积网络。但是,如果我已经有了从给定的固定大小窗口生成子映射的网络,该怎么办?

我有张量

代码语言:javascript
复制
sub_map = network(input_patch)

它从1, 8,8,3图像返回1,2,2,1映射(对应于输入大小为8,过滤器大小为3x3的3层FCN )。我如何在1,64,64,3张图像上扫描这个网络,以便生成一个由每个空间贡献组成的1,64,64,1张地图,就像在卷积中发生的那样?

我已经考虑过这些解决方案:

  • 使用tf.image.extract_image_patches可以显式提取深度维度中的所有图像补丁和通道,但我认为它会消耗太多的资源,因为由于内存限制,我要从一个完全卷积的网络切换到PatchGAN鉴别器--最终地图的组成也不是那么直接。
  • 在我得到的网络之前添加一个卷积层,但在这种情况下,我无法确定过滤器(及其大小)应该是什么,以便使预先训练过的模型在8x8图像上工作,同时将其集成到一个对较大图像起作用的模型中。对于我所能得到的,应该是类似于whole_map = tf.nn.convolution(input=x64_images, filter=sub_map, ...)的东西,但是我不认为这会起作用,因为过滤器是一个操作符,它依赖于接收字段本身。

最终目标是将这个小网络应用于大图像(例如。1024x1024)以一种有效的方式,因为我目前的模型逐渐缩小了图像的规模,由于大量的参数无法在内存中使用。

谁能帮我更好地了解我错过了什么?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-11-28 11:06:54

我发现了Andrew的一个有趣的关于如何使用卷积层实现滑动窗口的视频。这里的问题是,我认为层数是一个依赖于固定输入/输出形状的变量,而它应该是相反的。

原则上,保存的模型只应包含每个级别的学习滤波器,并且只要滤波器形状与层的输入/输出深度兼容。因此,应用一种不同的(如。(更大的)网络输入的空间分辨率产生不同的输出形状,这可以看作是神经网络在滑动窗口上对输入图像的应用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53410952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档