转自http://www.ixpub.net/thread-792786-1-1.html
要不要池化是个艰难的选择.
如果结合现实世界的情况, 池化肯定是必须的.
比方说如果你想要出远门, 那么在现实世界你有几个选择:
1, 坐公交; 2, 买台车; 3, 租台车; 4, 搭便车...
当然还有更多, 但是很明显的是, 就算你最后选择造一台车, 你最终大概也不会每次出门前都花几年时间造一台车. 除非你的速度快到可以在1毫秒的时间内造出一辆车, 这样的话不管是哪一种方式都明显不够这一种快. 但是问题是, 如果你真的这么干, 并且受你的影响, 其他人通过向你学习都学会了极速造车, 这样子表面上看起来问题好象已经是解决了. 但如果大家出门次数都比较多的话, 一个新的问题又将浮了出来:
你家已经没有地方放这么多的车. 这时候你可能会说: 我当然不会傻到这一步. 我有一台就够了, 干嘛造那么多?
写到这, 我觉得问题的本质已经暴露出来了, 我们在现实世界中日复一日地执行着将对象重用的法则, 但是在程序代码中却不停地重复制造功能完全相同的对象. 要知道在现实世界中, 对象的使用价值会随着时间的推移不断折旧, 当旧到不能再使用的时候, 我们就会需要一个新的对象. 这也是制造行业存在的根本. 但是反观我们程序员们整以生存的代码世界, 它们从来不存在折旧的问题, 我们的代码从来就不会越跑越老. 然后我们却从来不考虑重新使用对象, 每次我们想要一台汽车的时候, 我们就重新创造一台.
这当然不是一个正确的软件生态行为. 我这样说可能有点太华丽. 我只是不想有人以为我在讨论性能问题. 当然, 对象的重用肯定与性能相关, 但是两者不是同一个层次的问题. 性能是对运行状态的度量, 但是对象重用确确实实是从一个生态的角度来考虑问题的.
SUN公司提倡不需要在代码中使用对象池技术. 他们认为虚拟机完全可以解决对象池可以解决(在虚拟机内部)的问题. 我认为果然这样的话, 虚拟机就不再需要垃圾回收了. 垃圾回收本身就是对对象状态之存在的反证. 如果对象的状态从头到尾是一致的, 当然就不会需要任何对象回收. 正因为对象有具有使用价值和不再具有使用价值的区别, 我们才需要把仍然具有使用价值的对象保留起来, 把不再具有使用价值的对象抛弃. 这一点联系到现实生活就是我家里有一个垃圾桶. 其实就平常来说, 我往垃圾桶里面扔的东西的种类大多是一些包装纸或者包装纸盒, 当然还有一些食物残渣, 如果我在家里吃饭的话. 但是很少会有电脑, 或者手机之类的东西. 可能会有人说那是因为这些东西很贵, 所以你不会用一次就扔掉. 那么一支铅笔呢? 或者一个打火机呢(这里请不要考虑它的折旧)?
东西要不要扔掉, 决定于它对于我们是不是继续具有使用价值. 注意这里有一个相对关系. 一张废纸, 当然仍然具有使用价值, 但我却不再需要, 所以我只能抛弃它. 可能又会有人说 (其实是我自己的想法) 一张废纸也可以重新使用啊, 比如拿来生火(HOHO, 我有时候确实需要, 当燃气炉点不着的时候, 一张纸的用处实在是太大了). 这样一说其实引出更深的一层意思, 我们首先应该制造能够重新使用的东西, 然后当我们决定抛弃一件东西之前, 首先应该想想这件东西是不是还有别的用途呢? 比方一张已经写满的草稿纸确实可以用来生火. 哪怕这种纸质很不幸不适合生火(有些纸就是点不着, 不过我分不清到底是哪一种), 你一恼怒就又想扔掉它了! 且慢, 如果你家有足够的地方, 并且这张纸至少还算干净的话, 象我这种人 (我很少扔东西, 我家里面有十年以前的买的鞋子. 这样做的目的是为了当碰上连绵阴雨的天气我不至于要一天买一双鞋. 我不喜欢穿皮鞋或雨鞋!) 就会劝你还是留下来并且保管好. 当然, 这里有个前提, 就是你在家里并不能独自制造出一张纸. 如果你能呢? 也许恰好你就住在造纸厂里面, 这样你当然应该扔掉它. 我主张对象重用但从来不反对扔掉没有用的东西. 比方说一个破烟头, 我很少会留下这样的东西 (我还是会经常留下一两个在烟灰缸里面, 虽然我直到现在还是没有发现它们有什么用途. 但是这样的话我家里就会长期拥有破烟头. 除非有一天我发现破烟头原来会引起女孩子的反感, 我应该是不会改变这个习惯的. )
分享到:
相关推荐
1.高效简单池化的HttpClient工具类,提供单元测试用列。 2.支持基于SpringBoot 2.1.x的自动装载模块,引用依赖即可使用。 3.公司几十个项目都使用该工具类访问第三方的Http/Https+json协议接口。 4.经过上市公司多个...
然而,传统的池化操作如最大池化或平均池化可能会丢失图像中的局部能量信息,这是由于它们仅仅关注局部区域内最大或平均的特征,而忽略了其他可能包含重要信息的特征。 本文提出了一种基于矩阵2-范数的池化方法,...
对于每个池化窗口,我们执行最大池化或平均池化,然后将所有池化结果堆叠起来,生成一个固定长度的特征向量。这样,无论输入图像的尺寸如何变化,输出的特征向量总是具有相同的维度,从而适应全连接层的要求。 SPP-...
池化下采样_分类 - 最终.ipynb
全连接层和全局平均池化是深度学习网络中两种关键的操作,它们在处理图像识别、分类等任务时发挥着重要作用。 1. 全连接层的作用: 全连接层是传统神经网络架构中的一个重要组成部分,尤其在卷积神经网络(CNN)中...
标题中的“网络游戏”可能是一个误解,实际上,这里讨论的主题是基于小波池化卷积神经网络(Wavelet Pooling Convolutional Neural Network, WP-CNN)的合成孔径雷达(Synthetic Aperture Radar, SAR)图像分割方法...
深度学习入门课程---池化层(Pooling)原理视频教程,希望能够学习者提供帮助,实现对池化层(Pooling)原理基础知识的掌握与理解,为后续学习做好铺垫,实现池化层(Pooling)原理的灵活运用
构建卷积神经网络-包括卷积层-池化层-RELU-matlab
### OrionX AI算力资源池化解决方案技术白皮书-V3.4 #### 一、引言 在当今数字化时代,随着人工智能(AI)技术的迅猛发展,对高性能计算资源的需求日益增长。为了应对这一挑战,OrionX AI算力资源池化解决方案...
这种方法可以保留图像中的细节信息,适应不同大小的输入,并且可以根据任务类型选择最优的池化策略。 在自适应加权池化方法中,池化层被视为对特征值的加权求和,不同池化策略对应不同大小的权重。在下采样过程中,...
双线性池化(Bilinear pooling)是一种在深度学习领域中用于特征提取的高级技术,尤其在图像识别、细粒度分类和视觉问答等任务中展现出优越性能。它通过引入了矩阵乘法来增强特征之间的交互,从而捕获更丰富的上下文...
平均池化(Average Pooling)是其中的一种,它通过计算每个池化窗口内的像素值的平均值来得到新的特征。本教程将深入探讨Python中实现平均池化的原理和方法。 首先,我们需要理解平均池化的概念。在卷积神经网络...
传统的池化操作只能作用于高和宽两个空间维度,然而生物大脑中的神经链接激活抑制现象更加普遍,因此不同通道之间的特征选择同样重要。 三、基于通道池化的深度人脸识别网络 基于通道池化的深度人脸识别网络可以...
这些库提供了内置的池化层,但为了更好地理解和控制池化过程,手写实现池化函数是一种很好的学习方法。在实现过程中,你需要定义池化窗口的大小、步长(Stride)以及是否采用填充(Padding)来保持输出尺寸与输入...
卷积和池化是深度学习领域中的核心概念,特别是在图像处理和计算机视觉任务中起着至关重要的作用。本文将深入探讨这两个概念以及它们在实际应用中的工作原理。 卷积(Convolution): 卷积操作源于数学中的卷积运算...
在最大值池化层中,我们将输入特征图分割成多个小窗口,然后对每个窗口中的元素进行最大值池化操作。假设我们有一个输入特征图,维度为 batch×in_height×in_width×in_depth,其中batch是批量大小,in_height和in_...
### Apache Commons Pool:Java对象池化技术详解 #### 一、引言 在现代软件开发过程中,尤其是在基于Java的企业级应用开发中,资源管理和优化变得尤为重要。创建和销毁对象的成本通常较高,特别是在高并发场景下,...
池化层支持特征旋转和平移不变性的奥秘-pdf
池化操作包括在特征图的每个通道上滑动二维滤波器,并总结位于滤波器覆盖的区域内的特征。对于维度为n的特征图nhx nwx nc,则池化层后获得的输出维度为 (nh - f + 1) / s x (nw - f + 1)/s x nc 其中: ->nh-特征图...