精华内容
下载资源
问答
  • swish

    2021-09-02 18:21:15
    swish
  • 什么是SwishSwish是Microsoft Windows资源管理器的插件,它增加了对SFTP的支持。 如果您使用了Explorer的内置FTP支持,那么Swish只是用于SSH上的SFTP。 支持的操作系统 Windows 8(经过测试) Windows 7(偶尔...
  • 带有Swish-gate残余U-Net的动漫素描着色 论文作者:刘刚,陈欣,胡彦中 实施作者: Alexander Koumis,Amlesh Sivanantham,Pradeep Lam,Georgio Pizzorni 这是论文《带有Swish-Gated残余U-Net的动漫素描着色》的...
  • SWISH:基于Web的SWI-Prolog环境 有3种使用SWISH的方式,我们按复杂度从高到低的顺序列出: 在线版本 SWISH可用于在以下地址访问 。 我们试图使该服务器连续保持在线状态。 您可以将这些服务器用于播放,课程或共享...
  • Swish字体

    2019-10-23 12:00:41
    Swish字体是一款用于卡通设计方面的字体
  • tf.nn.swish_评论-SWiSH 2.0

    2020-07-29 21:01:05
    The release of SWiSH clearly demonstrates that you don’t need to be graphic artist or a programmer to build stunning Flash movies for your Website. 闪光灯很容易。 SWiSH的发布清楚地表明...

    tf.nn.swish

    Flash can be easy. The release of SWiSH clearly demonstrates that you don’t need to be graphic artist or a programmer to build stunning Flash movies for your Website.

    闪光灯很容易。 SWiSH的发布清楚地表明,您无需成为图形艺术家或程序员,即可为网站构建出色的Flash电影。

    Last year SWiSH was released as a tool that can animate text: you had a handful of effects that could not only make you text dance — it would practically do the Macarena. Easy to use, the product’s interface was not cluttered, nor too complex . SWiSH 2.0 extends this philosophy with more than a few handy new additions.

    去年,SWiSH被发布为可以对文本进行动画处理的工具:您拥有少量的效果,这些效果不仅可以使您跳舞,而且可以使Macarena发挥作用。 易于使用,产品的界面既不混乱也不复杂。 SWiSH 2.0扩展了这一理念,增加了许多方便的新功能。

    特征 (Features)
    • Button: Yes, now you can finally create buttons that work and operate exactly like buttons in Flash.

      按钮:是的,现在您终于可以创建可以像Flash中的按钮一样工作和操作的按钮。

    • Sprite Object: this is very similar to movie clips in Flash. You can create a short animation and have it be placed within a button, inside a main movie, or anywhere along the timeline. Very cool.

      Sprite对象:这与Flash中的影片剪辑非常相似。 您可以创建一个简短的动画,并将其放置在按钮内,主电影内或时间轴上的任何位置。 很酷。

    • Importing: Now you can import many of the common open standards for Vector and Raster graphics. The new imported formats include: WMF, EMF and SWF files, as well as GIF, JPG, BMP and PNG images.

      导入:现在,您可以导入许多矢量和栅格图形的通用开放标准。 新导入的格式包括:WMF,EMF和SWF文件,以及GIF,JPG,BMP和PNG图像。

    • Drawing Tools: the drawing tools allow you to draw and edit Vector graphics on the stage.

      绘图工具:使用绘图工具可以在舞台上绘制和编辑矢量图形。

    • Effect Presets: SWiSH 2 now not only gives you 150 animation effects, but also allows you to modify each Effect, giving you total control over how the animation plays back. As an added bonus, you can save that setting.

      效果预设: SWiSH 2现在不仅可以为您提供150种动画效果,还可以修改每个效果,从而完全控制动画的播放方式。 另外,您可以保存该设置。

    • Live Editing: this is very cool. You can play the animation as a SWF file (the exported file format needed to play a Flash movie in a Web page) within SWiSH and edit it at the same time!

      实时编辑:这非常酷。 您可以在SWiSH中将动画作为SWF文件(在Web页面中播放Flash电影所需的导出文件格式)进行播放,并同时进行编辑!

    • SWF Opitimization: the optimization of all files into Flash SWF files is now much more intelligent. Exported files are now much smaller.

      SWF Opitimization:将所有文件优化为Flash SWF文件现在更加智能。 现在,导出的文件要小得多。

    善良 (The Good)

    If you are not a pro Flash developer, there are few products that can match SWiSH’s ease of use. What makes this product particularly engaging is the way you can get up and running in a matter of minutes to build very cool Flash movies. The Effects Presets allows you to add 3D, explosions, Vortex, and TypeWriter visual effects, among others. Each of these presets can be tweaked to the tiniest detail and then saved, so that you can easily apply the new effect to future movies.

    如果您不是Flash的专业开发人员,那么很少有产品可以与SWiSH的易用性相匹配。 使该产品特别引人入胜的是您可以在几分钟内启动并运行以制作非常酷的Flash电影的方式。 “效果预设”使您可以添加3D,爆炸,Vortex和TypeWriter视觉效果等。 可以将这些预设中的每个预设调整为最微小的细节,然后保存,以便您可以轻松地将新效果应用于以后的电影。

    The new Vector drawing tools are a welcome inclusion. A seasoned Flash developer will see that they are very similar to the drawing tools in Flash. You have the basic shape tools (line, pencil, Oval and Oblong), and the paint tools that fill the shapes with color. I actually found these tools easier to work with than those in Macromedia’s Flash — not a bad job at all.

    新的Vector绘图工具是受欢迎的工具。 经验丰富的Flash开发人员将看到它们与Flash中的绘图工具非常相似。 您拥有基本的形状工具(线条,铅笔,椭圆形和长方形),以及用颜色填充形状的绘画工具。 实际上,我发现这些工具比Macromedia Flash中的工具更易于使用-绝对不是一件坏事。

    Finally, another new asset that is very much needed in SWiSH is the ability to create buttons and movie clips (SWiSH calls movie clips "Sprites"). And these complete the full tool chest, which will allow you to create high quality, captivating Flash movies.

    最后,SWiSH迫切需要的另一个新资产是创建按钮和影片剪辑的能力(SWiSH将影片剪辑称为“ Sprites”)。 这些功能完善了整个工具箱,使您可以创建高质量的,引人入胜的Flash电影。

    不太好 (The Not-So-Good)

    I think SWiSH is a great tool for the pricetag — the effects alone can make the price worthwhile. However, I do see room for improvement, for instance, with the scripting tool.. I can tell that SWiSH was designed to create movies, not interactive Flash presentations — this feature really was a pain to work I’d really like to see that area of the program improved for version 3.0.

    我认为SWiSH是标价的好工具-单凭效果就可以物有所值。 但是,我确实看到了使用脚本工具进行改进的余地。.我可以说SWiSH旨在创建电影,而不是交互式Flash演示文稿–该功能确实很难工作,我非常希望看到该程序的区域针对版本3.0进行了改进。

    I was also disappointed by the lack of support for importing Adobe Illustrator or Macromedia Freehand files. Many designers use these as their primary tools for building graphics. I found it annoying to have to export my Illustrator graphics as WMF files and then import them into SWiSH.

    我也对缺少导入Adobe Illustrator或Macromedia Freehand文件的支持感到失望。 许多设计人员将它们用作构建图形的主要工具。 我发现必须将Illustrator图形导出为WMF文件,然后将其导入SWiSH感到很烦。

    结论 (Conclusion)

    There are dozens of Flash movie clones appearing on the market. The two leaders are Macromedia and Adobe with Flash and Live Motion. These are too massive programs brimming with functionality, but they’re very expensive. If you take their best features — the ability to create animation easily, and distil it in a neat, small program — you get SWiSH. For the price SWiSH is a great addition to your library.

    市场上有数十种Flash电影克隆。 两个领导者是Macromedia和具有Flash和Live Motion的Adobe。 这些程序过于庞大,功能泛滥,但是它们非常昂贵。 如果您拥有其最佳功能-轻松创建动画并将其分解为整洁的小型程序的能力-您将获得SWiSH。 对于价格,SWiSH是您的图书馆的绝佳选择。

    There are over 70 products that create Flash movies. See over for a collection of the best with price, value and brief description. As you’ll see, SWiSH rates very well on all criteria.

    有70多种产品可以制作Flash电影。 查看价格,价值和简要说明的最佳收藏。 正如您将看到的,在所有条件下SWiSH的评分都很高。

    Rating: 4 stars Price: $49.95 Special Offer: SitePoint users buy SWiSH now for $39.96

    评分: 4星价格: $ 49.95 特价: SitePoint用户现在以39.96美元的价格 购买SWiSH

    Flash工具比较 (Flash Tools Comparison)

    Macromedia Flash $399 ***** The one that started it all. A great interface and access to all of those neat features. How can you knock it?

    Macromedia Flash, 399美元*****这一切开始了。 强大的界面,可访问所有这些简洁功能。 你怎么敲它?

    Adobe Live Motion 2 $199 ***** Macromedia is getting a run for its money with this product. Great graphics tools and full access to the scripting library making this a great tool.

    Adobe Live Motion 2 $ 199 ***** Macromedia的这款产品颇受青睐。 出色的图形工具以及对脚本库的完全访问权限,使它成为了一个出色的工具。

    SWiSH $49.95 **** A great tool to build fast animations with stunning effects.

    SWiSH $ 49.95 ****一个很棒的工具,可以创建具有惊人效果的快速动画。

    FlashJester Various Pricing *** Takes your Flash movies and make them into screensavers.

    FlashJester各种定价***将您的Flash电影放到屏幕保护程序中。

    SWFStudio $139 **** SWF Studio allows you to extend your Flash movies to connect with databases through ODBC and other cool tools.

    SWFStudio $ 139 **** SWF Studio允许您扩展Flash电影,以通过ODBC和其他出色的工具与数据库连接。

    Swift 3D $159 **** The best 3D tool that exports to the Flash format. Why is this not in Macromedia’s own Flash tool?

    Swift 3D $ 159 ****导出为Flash格式的最佳3D工具。 为什么Macromedia自己的Flash工具中没有此功能?

    FlashTyper Free ** A Web-based Flash text movie tool.

    FlashTyper Free **基于Web的Flash文本电影工具。

    翻译自: https://www.sitepoint.com/review-swish-2-0/

    tf.nn.swish

    展开全文
  • SWISH论文翻译

    千次阅读 2019-03-20 11:48:51
    SWISH论文翻译 基本是机器翻译,也进行了基本的人工矫正,凑活看吧 原论文:SEARCHING FOR ACTIVATION FUNCTIONS 链接:https://arxiv.org/pdf/1710.05941.pdf 摘要 深度网络中激活函数的选择对训练动态和任务性能...

    SWISH论文翻译

    基本是机器翻译,也进行了基本的人工矫正,凑活看吧
    原论文:SEARCHING FOR ACTIVATION FUNCTIONS
    链接:https://arxiv.org/pdf/1710.05941.pdf

    摘要
    深度网络中激活函数的选择对训练动态和任务性能有显着影响。目前,最成功和广泛使用的激活函数是整流线性单元(ReLU)。尽管已经提出了各种手工设计的ReLU替代品,但由于收益不一致,没有人会替换它。在这项工作中,我们建议利用自动搜索技术来发现新的激活函数。结合使用穷举和强化学习搜索,我们发现了多种新颖的激活函数。我们通过使用最佳发现的激活函数进行实证评估来验证搜索的有效性。我们的实验表明,最好的发现激活函数f(x)= x·sigmoid( β \beta βx),我们称之为Swish,在更深层次的模型中,在许多具有挑战性的数据集中,它们比ReLU更有效。例如,简单地用Swish单元替换ReLU可以将Mobile NASNet-A的ImageNet上的前1级分类精度提高0.9%,而Inception-ResNet-v2则提高0.6%。 Swish的简单性及其与ReLU的相似性使得从业者可以轻松地在任何神经网络中用Swish单元替换ReLU。

    1. 介绍
    每个深层网络的核心都是线性变换,然后是激活函数 f ( ⋅ ) f(\cdot) f()。激活函数在深度神经网络训练的成功中起着重要作用。目前,最成功和广泛使用的激活函数是整流线性单元(ReLU)(Hahnloser等,2000; Jarrett等,2009; Nair&Hinton,2010),定义为 f ( x ) = m a x ( x , 0 ) f(x)=max(x,0) f(x)=max(x0)。 ReLUs的使用是一项突破,使得能够对最先进的深层网络进行全面监督训练(Krizhevsky等,2012)。具有ReLU的深度网络比具有sigmoid或tanh单位的网络更容易优化,因为当ReLU功能的输入为正时,梯度能够流动。由于其简单性和有效性,ReLU已成为深度学习社区中使用的默认激活函数。

    虽然已经提出了许多激活函数来取代ReLU(Maas等人,2013; He等人,2015; Clevert等人,2015; Klambauer等人,2017),但始终没有一款能够像ReLU一样获得广泛采用。许多从业者都喜欢ReLU的简单性和可靠性,因为其他激活函数的性能改进往往在不同的模型和数据集上不一致。
    建议更换ReLU的激活函数是手工设计的,以适应被认为重要的属性。然而,最近显示使用搜索技术自动地去发现传统人工设计的组件非常有效(Zoph&Le,2016; Bello等,2017; Zoph等,2017)。例如,Zoph等人。 (2017)使用基于强化学习的搜索来找到一个可复制的卷积单元,其优于ImageNet上的人工设计架构。

    在这项工作中,我们使用自动搜索技术来发现新的激活函数。我们专注于寻找新的标量激活函数,它们将标量作为输入并输出标量,因为标量激活函数可用于替换ReLU函数而无需更改网络体系结构。结合穷举与基于强化学习手段的搜索技术,我们发现许多新的激活函数都显示出有前途的表现。为了进一步验证使用搜索来发现标量激活函数的有效性,我们根据经验评估了发现的最佳激活函数。最好的激活函数,我们称之为Swish,即 f ( x ) = x ⋅ s i g m o i d ( β x ) f(x)=x\cdot sigmoid(\beta x) f(x)=xsigmoid(βx),其中 β \beta β是一个常数或可训练的参数。广泛实验表明,Swish在应用于各种具有挑战性的领域(如图像分类和机器翻译)的深度网络上始终类似或优于ReLU。在ImageNet上,用Swish单元替换ReLU可以在Mobile NASNet-A(Zoph等,2017)上将前1个分类精度提高0.9%,在Inception-ResNet-v2上提高0.6%(Szegedy等,2017)。这些精确度的提高是非常重要的,因为一年的架构调整和扩大,从初始V3(Szegedy等,2016)到Inception-ResNet-v2(Szegedy等,2017)产生了1.3%的准确性改进。

    2. 方法
    为了利用搜索技术,必须设计包含有候选激活函数的搜索空间。设计搜索空间的一个重要挑战是平衡搜索空间的大小和表现力。过度约束的搜索空间将不包含新颖的激活函数,而过大的搜索空间将难以有效搜索。为了平衡这两个标准,我们设计了一个简单的搜索空间,其灵感来自Bello等人(2017)的优化器搜索空间,它通过组合一元和二元函数来构造激活函数。
    在这里插入图片描述
    如图1所示,通过重复组合“核心单元”来构造激活函数,“核心单元”定义为 b ( u 1 ( x 1 ) , u 2 ( x 2 ) ) b(u_{1}(x_{1}),u_{2}(x_{2})) b(u1(x1),u2(x2))。核心单元接收两个标量输入,通过一元函数独立地传递每个输入,并将两个一元输出与输出标量的二元函数组合。由于我们的目标是找到将单个标量输入转换为单个标量输出的标量激活函数,因此一元函数的输入仅限于图层预激活x和二元函数输出。

    给定搜索空间,搜索算法的目标是找到一元函数和二元函数的有效选择。搜索算法的选择取决于搜索空间的大小。如果搜索空间很小,例如当使用单个核心单元时,则可以详尽地枚举整个搜索空间。如果核心单元重复多次,则搜索空间将非常大(即,大约1012种可能性),使得穷举搜索不可行。

    对于大型搜索空间,我们使用RNN控制器(Zoph&Le,2016),图2是其可视化后的效果。在每个时间步长,控制器预测激活函数的单个组件。在下一个时间步长中将预测反馈给控制器,并且重复该过程直到预测激活函数的每个分量。然后使用预测的字符串来构建激活函数。

    一旦通过搜索算法生成了候选激活函数,就在某些任务上训练具有候选激活函数的“子网络”,例如CIFAR-10上的图像分类。训练之后,记录下子网络的验证准确性并将其应用于搜索算法的更新。在穷举搜索的情况下,保持按验证准确度排序的性能最佳的激活函数列表。在RNN控制器的情况下,控制器通过强化学习进行训练,以最大化验证准确度,其中验证准确度用作奖励。该训练推动控制器生成具有高验证精度的激活函数。
    在这里插入图片描述
    由于评估单个激活函数需要对子网络进行训练,因此搜索的计算成本非常高。为了减少进行搜索所需的时间,我们使用分布式训练方案来并行化每个子网络的训练。在该方案中,搜索算法提出了一批候选激活函数,这些函数被添加到队列中。机器工作者将激活函数从队列中拉出,训练子网络,并报告相应激活函数的最终验证准确性。验证精度被汇总并用于更新搜索算法。

    3. 研究发现
    我们使用ResNet-20(He等,2016a)作为子网络架构进行所有搜索,并在CIFAR-10(Krizhevsky&Hinton,2009)上进行10K步骤的训练。这种受限制的环境可能会使结果产生偏差,因为性能最佳的激活函数可能仅适用于小型网络。但是,我们在实验部分中显示,许多发现的函数可以推广到更大的模型。穷举搜索用于小搜索空间,而RNN控制器用于较大的搜索空间。使用 Policy Proximal Optimization(Schulman et al。,2017)对RNN控制器进行训练,使用指数移动平均值作为基线来减少方差。考虑的完整列表一元和二元函数如下:

    • 一元函数: x x x, − x -x x, ∣ x ∣ |x| x, x 2 x^{2} x2, x 3 x^{3} x3, x \sqrt x x , β x \beta x βx, x + β x+\beta x+β, l o g ( ∣ x ∣ + ϵ ) log(|x|+\epsilon) log(x+ϵ), e x p ( x ) exp(x) exp(x), s i n ( x ) sin(x) sin(x), c o s ( x ) cos(x) cos(x), s i n h ( x ) sinh(x) sinh(x), c o s h ( x ) cosh(x) cosh(x), t a n h ( x ) tanh(x) tanh(x), s i n h − 1 ( x ) sinh^{-1}(x) sinh1(x), t a n − 1 ( x ) tan^{-1}(x) tan1(x), s i n c ( x ) sinc(x) sinc(x), m a x ( x , 0 ) max(x,0) max(x,0), m i n ( x , 0 ) min(x,0) min(x,0), σ ( x ) \sigma(x) σ(x), l o g ( 1 + e x p ( x ) ) log(1+exp(x)) log(1+exp(x)), e x p ( − x 2 ) exp(-x^{2}) exp(x2), e r f ( β x ) erf(\beta x) erf(βx)
    • 二元函数: x 1 + x 2 x_{1}+x_{2} x1+x2, x 1 ⋅ x 2 x_{1}\cdot x_{2} x1x2, x 1 − x 2 x_{1}-x_{2} x1x2, x 1 x 2 + ϵ \frac{x_{1}}{x_{2}+\epsilon} x2+ϵx1, m a x ( x 1 , x 2 ) max(x_{1}, x_{2}) max(x1,x2), m i n ( x 1 , x 2 ) min(x_{1}, x_{2}) min(x1,x2), σ ( x 1 ) ⋅ x 2 \sigma(x_{1})\cdot x_{2} σ(x1)x2, e x p ( − β ( x 1 − x 2 ) 2 ) exp(-\beta (x_{1}-x_{2})^{2}) exp(β(x1x2)2), e x p ( − β ∣ x 1 − x 2 ∣ ) exp(-\beta |x_{1}-x_{2}|) exp(βx1x2), β x 1 + ( 1 − β ) x 2 \beta x_{1}+(1-\beta)x_{2} βx1+(1β)x2

    其中 β \beta β表示每通道可训练参数, σ ( x ) = ( 1 + e x p ( − x ) ) − 1 \sigma(x)=(1+exp(-x))^{-1} σ(x)=(1+exp(x))1是S形函数。通过改变用于构造激活函数的核心单元的数量并改变搜索算法可用的一元和二元函数来创建不同的搜索空间。

    图3描绘了搜索找到的表现最佳的新激活函数。我们强调一下搜索发现的几个值得注意的趋势:
    在这里插入图片描述

    • 复杂的激活函数始终逊色于更简单的激活函数,这可能是由于优化难度的增加。性能最佳的激活函数可以由1或2个核心单元表示。
    • 顶部激活函数共享的一个共同结构是使用原始预激活x作为最终二元函数的输入: b ( x , g ( x ) ) b(x,g(x)) b(x,g(x))。 ReLU函数也遵循这种结构,其中 b ( x 1 , x 2 ) = m a x ( x 1 , x 2 ) b(x_{1},x_{2})=max(x_{1}, x_{2}) b(x1x2)=max(x1,x2) g ( x ) = 0 g(x)=0 g(x)=0
    • 这些研究发现了使用周期函数的激活函数,比如 s i n sin sin c o s cos cos。周期函数的最常见用途是通过使用原始预激活x(或线性缩放的x)进行加法或减法。在激活函数中使用周期函数只是在先前的工作中进行了简要探讨(Parascandolo等,2016),因此这些发现的函数为进一步研究提供了一条富有成效的途径。
    • 使用除法的函数往往表现不佳,因为当分母接近0时输出会爆炸。只有当分母中的函数要么偏离0时才会成功,例如 c o s h ( x ) cosh(x) cosh(x),或者仅当分子也接近0时才成功接近0,产生1的输出。

    由于使用相对较小的子网络发现激活函数,因此当应用于较大的模型时,它们的性能可能不一致。为了测试最佳表现的新型激活函数对不同架构的稳健性,我们使用预激活ResNet-164(RN)(He等,2016b),Wide ResNet 28-10(WRN)(Zagoruyko&Komodakis, 2016),和DenseNet 100-12(DN)(Huang et al。,2017)模型。我们在TensorFlow中实现了3个模型,并将ReLU函数替换为搜索发现的每个顶级新激活函数。我们使用每个工作中描述的相同超参数,例如使用具有动量的SGD进行优化,并通过报告5个不同运行的中值来遵循先前的工作。
    在这里插入图片描述
    结果显示在表1和表2中。尽管模型体系结构发生了变化,但八个激活函数中有六个被成功推广。在这六个激活函数中,全都类似或优于ResNet-164上的ReLU。此外,所发现的两个激活函数 x ⋅ σ ( β x ) x\cdot \sigma(\beta x) xσ(βx) m a x ( x , σ ( x ) ) max(x,\sigma(x)) max(xσ(x))在所有三个模型上始终匹配或优于ReLU

    虽然这些结果很有希望,但仍然不清楚发现的激活函数是否可以在具有挑战性的真实世界数据集上成功替换ReLU。为了验证搜索的有效性,在本工作的其余部分,我们专注于实证评估激活函数 f ( x ) = x ⋅ σ ( β x ) f(x)=x\cdot \sigma(\beta x) f(x)=xσ(βx),我们称之为Swish。我们选择广泛地评估Swish而不是 m a x ( x , σ ( x ) ) max(x,\sigma(x)) max(xσ(x)),因为早期实验显示Swish的更好的推广。在接下来的部分中,我们分析Swish的属性,然后在各种任务中的大型模型上进行全面的实证评估,比较Swish、ReLU和其他候选基线激活函数。

    4. SWISH
    总结一下,Swish定义为 x ⋅ σ ( β x ) x\cdot \sigma(\beta x) xσ(βx),其中 σ ( x ) = ( 1 + e x p ( − x ) ) − 1 \sigma(x)=(1+exp(-x))^{-1} σ(x)=(1+exp(x))1是S形函数, β \beta β是常数或可训练的参数。图4绘制了不同 β \beta β的值对应的Swish图。如果 β = 1 \beta=1 β=1,则Swish等效于 Elfwing等人(2017)的 Sigmoid加权线性单位(Sigmoid-weighted Linear Unit, SiL),它被提议用于强化学习。如果 β = 0 \beta=0 β=0,则Swish变为缩放线性函数 f ( x ) = x / 2 f(x)=x/2 f(x)=x/2。当 β → ∞ \beta \rarr \infty β时,sigmoid分量接近0-1函数,这时Swish变得像ReLU函数一样。这表明可以将Swish松散地视为平滑函数,其在线性函数和ReLU函数之间进行非线性插值。如果将 β \beta β设置为可训练参数,则可以通过模型控制插值程度。
    在这里插入图片描述
    像ReLU一样,Swish上无界下有界。与ReLU不同,Swish是平滑且非单调的。实际上,Swish的非单调性正是它区别于其他激活函数的一个特点。 Swish的导数是:
    f ′ ( x ) = σ ( β x ) + β x ⋅ σ ( β x ) ( 1 − σ ( β x ) ) = σ ( β x ) + β x ⋅ σ ( β x ) − β x ⋅ σ ( β x ) 2 = β x ⋅ σ ( β x ) + σ ( β x ) ( 1 − β x ⋅ σ ( β x ) ) = β f ( x ) + σ ( β x ) ( 1 − β f ( x ) ) f'(x) = \sigma(\beta x)+\beta x\cdot\sigma(\beta x)(1-\sigma(\beta x)) \\ = \sigma(\beta x)+\beta x\cdot\sigma(\beta x)-\beta x\cdot\sigma(\beta x)^{2} \\ = \beta x\cdot\sigma(\beta x) + \sigma(\beta x)(1-\beta x\cdot\sigma(\beta x)) \\ = \beta f(x) + \sigma(\beta x)(1-\beta f(x)) f(x)=σ(βx)+βxσ(βx)(1σ(βx))=σ(βx)+βxσ(βx)βxσ(βx)2=βxσ(βx)+σ(βx)(1βxσ(βx))=βf(x)+σ(βx)(1βf(x))
    对于不同的 β \beta β值,Swish的一阶导数在图5中示出。 β \beta β的大小控制一阶导数渐近0和1的速度。当 β = 1 \beta=1 β=1时,对于小于1.25的输入,导数的幅度小于1。因此,具有 β = 1 \beta=1 β=1的Swish的成功意味着ReLU的梯度保持特性(即,当x> 0时具有1的导数)可能不再是现代架构中的明显优势。

    Swish和ReLU之间最显着的区别是当 x &lt; 0 x&lt;0 x<0时,Swish的非单调“碰撞”。如图6所示,大部分的 preactivations 落在凸起的范围内( − 5 ≤ x ≤ 0 -5\le x \le 0 5x0),这表明非单调凹凸(bump)是Swish的一个重要方面。可以通过改变 β \beta β参数来控制凸起的形状。虽然固定 β = 1 \beta=1 β=1在实践中是有效的,但实验部分显示训练 β \beta β可以进一步改善某些模型的性能。图7绘制了来自Mobile NASNet-A模型的训练 β \beta β值的分布(Zoph等,2017)。训练的 β \beta β值在0和1.5之间展开,并且在 β ≈ 1 \beta\approx1 β1处具有峰值,表明该模型利用了可训练 β \beta β参数的额外灵活性。
    在这里插入图片描述
    实际上,Swish可以通过大多数深度学习库中的单行代码更改来实现,例如TensorFlow(Abadi等,2016)(例如,x * tf.sigmoid(beta * x)或tf.nn.swish(x) )如果使用在提交此作品后发布的TensorFlow版本)。需要注意的一点是,如果使用BatchNorm(Ioffe&Szegedy,2015),则应设置scale参数。由于ReLU函数是分段线性的,一些高级库会默认关闭scale参数,这对Swish的设置来说是不正确的。为了训练Swish网络,我们发现稍微降低一些用于训练ReLU网络的学习率,效果会更好。

    5. 使用SWISH的实验
    我们将Swish与ReLU和一些最近提出的激活函数进行基准测试,以确定挑战性数据集,并发现Swish在几乎所有任务中都类似或超过基线。以下部分将更详细地描述我们的实验设置和结果。作为总结,表3显示了Swish与我们考虑的每个基线激活函数(将在下一节中定义)进行比较的结果。表3中的结果通过比较Swish的性能与应用于各种模型的不同激活函数的性能进行汇总,例如Inception ResNet-v2(Szegedy等,2017)和Transformer(Vaswani等,2017)跨越多个数据集,例如CIFAR,ImageNet和英德翻译在单侧配对符号测试下,Swish相对于其他激活函数的改进在统计上是显着的。
    在这里插入图片描述
    5.1. 实验设置
    我们将Swish与各种模型和数据集上的其他几个基线激活函数进行比较。由于已经提出了许多激活函数,我们选择最常见的激活函数进行比较,并遵循每项工作中的指导原则:

    • Leaky ReLU (LReLU) (Maas et al., 2013):
      在这里插入图片描述
      其中 α \alpha α=0.01。当x < 0时,LReLU允许少量信息流动
    • ParametricReLU(PReLU)(Heetal。,2015):与LReLU形式相同,但 α \alpha α是可学习的参数。每个通道都有一个共享 α \alpha α,初始化为0.25。
    • Softplus(Nair&Hinton,2010): f ( x ) = l o g ( 1 + e x p ( x ) ) f(x)=log(1+exp(x)) f(x)=log(1+exp(x))。 Softplus是一个平滑的函数,具有类似于Swish的属性,但严格来说是正数和单调的。它可以被视为ReLU的平滑版本。
    • Exponential Linear Unit (ELU) (Clevert et al., 2015):
      在这里插入图片描述
      其中 α \alpha α=1.0
    • Scaled Exponential Linear Unit (SELU) (Klambauer et al., 2017):
      在这里插入图片描述
      其中 α ≈ 1.6733 \alpha\approx1.6733 α1.6733 λ ≈ 1.0507 \lambda\approx1.0507 λ1.0507
    • Gaussian Error Linear Unit(GELU)(Hendrycks&Gimpel,2016): f ( x ) = x ⋅ Φ ( x ) f(x)=x\cdot\Phi(x) f(x)=xΦ(x),其中 Φ ( x ) \Phi(x) Φ(x)是标准正态分布的累积分布函数。 GELU是一种非单调函数,其形状类似于 β = 1.4 \beta=1.4 β=1.4的Swish。

    我们用可训练的 β \beta β和Swish评估具有固定 β = 1 \beta=1 β=1的Swish(为简单起见,我们称之为Swish-1,但它相当于Elfwing等人的Sigmoid加权线性单元(2017))。请注意,由于我们的训练设置不同,我们的结果可能无法与相应工作中的结果直接比较。

    5.2. CIFAR
    我们首先将Swish与CIFAR-10和CIFAR-100数据集上的所有基线激活函数进行比较(Krizhevsky&Hinton,2009)。我们遵循在比较搜索技术发现的激活函数时使用的相同设置,并将5次运行的中位数与预激活ResNet-164(He等,2016b),Wide ResNet 28-10(WRN)进行比较(Zagoruyko&Komodakis,2016)和DenseNet 100-12(Huang et al。,2017)模型。
    在这里插入图片描述
    表4和表5中的结果显示Swish和Swish-1如何在CIFAR-10和CIFAR-100的每个模型上始终匹配或优于ReLU。 Swish还匹配或超过几乎所有型号的最佳基准性能。重要的是,不同模型之间的“最佳基线”变化,证明了Swish的稳定性,以匹配这些不同的基线。 Softplus是一款平滑且一侧接近零的软件,与Swish相似,也具有很强的性能。
    5.3. IMAGENET
    接下来,我们将Swish与ImageNet 2012分类数据集上的基线激活函数进行比较(Russakovsky等,2015)。 ImageNet被广泛认为是最重要的图像分类数据集之一,由1,000个类和128万个训练图像组成。我们评估验证数据集,其中包含50,000张图像。

    我们比较了为ImageNet设计的各种体系结构的所有激活函数:Inception-ResNet-v2,Inception-v4,Inception-v3(Szegedy等,2017),MobileNet(Howard等,2017)和Mobile NASNet -A(Zoph等,2017)。所有这些架构都使用Re-LU设计。我们再次使用不同的激活函数替换ReLU激活函数,并训练固定步数,由ReLU基线的收敛确定。对于每个激活函数,我们使用RMSProp(Tieleman&Hinton,2012)尝试3种不同的学习率并选择最佳.2所有网络都使用He初始化进行初始化(He et al。,2015).3验证性能差异是可重复的,我们运行Inception-ResNet-v2和Mobile NASNet-A实验3次,具有第一次实验的最佳学习率。我们绘制了图8中Mobile NASNet-A的学习曲线。
    在这里插入图片描述
    在这里插入图片描述
    表6-10中的结果显示Swish的强大性能。在Inception-ResNet-v2中,Swish的表现优于ReLU 0.5%。 Swish在移动尺寸型号上的表现尤为出色,移动NASNet-A的性能提升1.4%,而MobileNet则超过ReLU的2.2%。在大多数模型中,Swish也匹配或超过最佳表现基线,同样,表现最佳的基线因型号而异。 Softplus在较大的型号上实现了与Swish相当的精度,但在两种移动尺寸的型号上都表现更差。对于Inception-v4,激活函数之间切换的收益更受限制,而Swish略微低于Softplus和ELU。一般来说,结果表明切换到Swish可以通过很少的额外调整来提高性能。

    5.4. 机器翻译
    我们还在机器翻译领域对Swish进行了测试。我们在标准 WMT 2014 英德数据集上训练机器翻译模型,该数据集有450万个训练句子,并使用标准BLEU度量标准评估4种不同的新闻测试集。我们使用基于注意力的Transformer(Vaswani等,2017)模型,该模型在每个关注层之间的2层前馈网络中使用ReLU。我们培训了一个12层“基础Transformer”模型,具有2个不同的学习率4,用于300K步骤,但是否则使用与原始工作相同的超参数,例如使用Adam(Kingma&Ba,2015)进行优化。
    在这里插入图片描述
    表11显示Swish在机器翻译方面优于或匹配其他基线。 Swish-1在newstest2016上的表现特别好,超过了下一个表现最好的基线0.6 BLEU积分。性能最差的基线功能是Softplus,表明不同域的性能不一致。相比之下,Swish在多个领域的表现始终如一。

    6. 相关工作
    使用各种自动搜索技术发现Swish。搜索技术已被用于其他工作中以发现卷积和复现结构(Zoph&Le,2016; Zoph等人,2017; Real等人,2017; Cai等人,2017; Zhong等人,2017)和优化者(Bello等,2017)。使用搜索技术来发现传统的手工设计组件是最近复兴的元学习子领域的一个实例(Schmidhuber,1987; Naik&Mammone,1992; Thrun&Pratt,2012)。元学习已被用于寻找一次性学习的初始化(Finn等,2017; Ravi&Larochelle,2016),适应性强化学习(Wang等,2016; Duan等,2016),以及生成模型参数(Ha et al。,2016)。元学习是强大的,因为从编码的最小假设中获得的灵活性导致了经验上有效的解决方案。我们利用这个属性来找到具有强大经验性能的标量激活函数,例如Swish。

    虽然这项工作侧重于将标量转换为另一个标量的标量激活函数,但深层网络中使用了许多类型的激活函数。多任务功能,如max pooling,maxout(Goodfellow et al。,2013)和门控(Hochreiter&Schmidhuber,1997; Srivastava等,2015; van den Oord等,2016; Dauphin等。 ,2016; Wu等人,2016; Miech等人,2017),通过以非线性方式组合多个源来获得它们的能力。一对多函数,如Concatenated ReLU(Shang et al。,2016),通过将多个非线性函数应用于单个输入来提高性能。最后,多对多函数,如BatchNorm(Ioffe和Szegedy,2015)和LayerNorm(Ba等,2016),在它们的输入之间引起强大的非线性关系。

    大多数先前的工作集中于提出新的激活函数(Maas等,2013; Agostinelli等,2014; He等,2015; Clevert等,2015; Hendrycks&Gimpel,2016; Klambauer等, 2017; Qiu&Cai,2017; Zhou et al。,2017; Elfwing et al。,2017),但很少有研究,如Xu等。 (2015),系统地比较了不同的激活函数。据我们所知,这是第一项比较跨多个具有挑战性的数据集的标量激活函数的研究。

    我们的研究表明,Swish在深度模型上的表现始终优于ReLU。 Swish的强大表现成功挑战了ReLU。当剩余连接(He等,2016a)能够优化非常深的网络时,关于ReLU的梯度保持特性的重要性的假设似乎是不必要的。在完全关注的Transformer(Vaswani等,2017)中可以找到类似的见解,当使用恒定长度的注意连接时,不再需要复杂构造的LSTM单元(Hochre-iter&Schmidhuber,1997)。架构改进减少了单个组件保留渐变的需要。

    7. 结论
    在这项工作中,我们利用自动搜索技术来发现具有强大经验性能的新型激活函数。然后我们凭经验验证了最佳发现的激活函数,我们将其称为Swish,并定义为 f ( x ) = x ⋅ s i g m o i d ( β x ) f(x)=x·sigmoid(\beta x) f(x)=xsigmoid(βx)。我们的实验使用了为ReLU设计的模型和超参数,并用Swish替换了ReLU激活函数;即使是这种简单,次优的程序,Swish也能始终如一地超越ReLU和其他激活函数。当这些模型和超参数专门针对Swish进行设计时,我们期望获得额外的收益。 Swish的简单性及其与ReLU的相似性意味着在任何网络中替换ReLU只是简单的一行代码更改。


    参考文献

    Mart ́ın Abadi, Paul Barham, Jianmin Chen, Zhifeng Chen, Andy Davis, Jeffrey Dean, Matthieu Devin, Sanjay Ghemawat, Geoffrey Irving, Michael Isard, et al. Tensorflow: A system for large-scale machine learning. In USENIX Symposium on Operating Systems Design and Implementation, volume 16, pp. 265–283, 2016.
    Forest Agostinelli, Matthew Hoffman, Peter Sadowski, and Pierre Baldi. Learning activation functions to improve deep neural networks. arXiv preprint arXiv:1412.6830, 2014.
    Jimmy Lei Ba, Jamie Ryan Kiros, and Geoffrey E Hinton. Layer normalization. In Advances in Neural Information Processing Systems, 2016.
    Irwan Bello, Barret Zoph, Vijay Vasudevan, and Quoc V Le. Neural optimizer search with reinforcement learning. In International Conference on Machine Learning, pp. 459–468, 2017.
    Han Cai, Tianyao Chen, Weinan Zhang, Yong Yu, and Jun Wang. Reinforcement learning for architecture search by network transformation. arXiv preprint arXiv:1707.04873, 2017.
    Djork-Arne ́ Clevert, Thomas Unterthiner, and Sepp Hochreiter. Fast and accurate deep network learning by exponential linear units (elus). arXiv preprint arXiv:1511.07289, 2015.
    Yann N Dauphin, Angela Fan, Michael Auli, and David Grangier. Language modeling with gated convolutional networks. arXiv preprint arXiv:1612.08083, 2016.
    Yan Duan, John Schulman, Xi Chen, Peter L Bartlett, Ilya Sutskever, and Pieter Abbeel. Rl2: Fast reinforce- ment learning via slow reinforcement learning. arXiv preprint arXiv:1611.02779, 2016.
    Stefan Elfwing, Eiji Uchibe, and Kenji Doya. Sigmoid-weighted linear units for neural network function approximation in reinforcement learning. arXiv preprint arXiv:1702.03118, 2017.
    Chelsea Finn, Pieter Abbeel, and Sergey Levine. Model-agnostic meta-learning for fast adaptation of deep networks. arXiv preprint arXiv:1703.03400, 2017.
    Ian J Goodfellow, David Warde-Farley, Mehdi Mirza, Aaron Courville, and Yoshua Bengio. Maxout networks. In International Conference on Machine Learning, 2013.
    David Ha, Andrew Dai, and Quoc V Le. Hypernetworks. arXiv preprint arXiv:1609.09106, 2016.
    Richard HR Hahnloser, Rahul Sarpeshkar, Misha A Mahowald, Rodney J Douglas, and H Sebastian Seung. Digital selection and analogue amplification coexist in a cortex-inspired silicon circuit. Nature, 405(6789): 947, 2000.
    Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Delving deep into rectifiers: Surpassing human- level performance on imagenet classification. In Proceedings of the IEEE international conference on com- puter vision, pp. 1026–1034, 2015.
    Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition, pp. 770–778, 2016a.
    Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Identity mappings in deep residual networks. In European Conference on Computer Vision, pp. 630–645. Springer, 2016b.
    Dan Hendrycks and Kevin Gimpel. Bridging nonlinearities and stochastic regularizers with gaussian error linear units. arXiv preprint arXiv:1606.08415, 2016.
    Sepp Hochreiter and Ju ̈rgen Schmidhuber. Long short-term memory. Neural Computation, 9(8):1735–1780, 1997.
    Andrew G Howard, Menglong Zhu, Bo Chen, Dmitry Kalenichenko, Weijun Wang, Tobias Weyand, Marco Andreetto, and Hartwig Adam. Mobilenets: Efficient convolutional neural networks for mobile vision ap- plications. arXiv preprint arXiv:1704.04861, 2017.
    Gao Huang, Zhuang Liu, Kilian Q Weinberger, and Laurens van der Maaten. Densely connected convolutional networks. In Conference on Computer Vision and Pattern Recognition, 2017.
    Sergey Ioffe and Christian Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift. In International Conference on Machine Learning, pp. 448–456, 2015.
    Kevin Jarrett, Koray Kavukcuoglu, Yann LeCun, et al. What is the best multi-stage architecture for object recognition? In 2009 IEEE 12th International Conference on Computer Vision, 2009.
    Diederik Kingma and Jimmy Ba. Adam: A method for stochastic optimization. In International Conference on Learning Representations, 2015.
    Gu ̈nter Klambauer, Thomas Unterthiner, Andreas Mayr, and Sepp Hochreiter. Self-normalizing neural net- works. arXiv preprint arXiv:1706.02515, 2017.
    Alex Krizhevsky and Geoffrey Hinton. Learning multiple layers of features from tiny images. Technical report, Technical report, University of Toronto, 2009.
    Alex Krizhevsky, Ilya Sutskever, and Geoffrey E Hinton. Imagenet classification with deep convolutional neural networks. In Advances in Neural Information Processing Systems, pp. 1097–1105, 2012.
    Andrew L Maas, Awni Y Hannun, and Andrew Y Ng. Rectifier nonlinearities improve neural network acoustic models. In International Conference on Machine Learning, volume 30, 2013.
    Antoine Miech, Ivan Laptev, and Josef Sivic. Learnable pooling with context gating for video classification. arXiv preprint arXiv:1706.06905, 2017.
    Devang K Naik and RJ Mammone. Meta-neural networks that learn by learning. In Neural Networks, 1992. IJCNN., International Joint Conference on, volume 1, pp. 437–442. IEEE, 1992.
    Vinod Nair and Geoffrey E Hinton. Rectified linear units improve restricted boltzmann machines. In Interna- tional Conference on Machine Learning, 2010.
    Giambattista Parascandolo, Heikki Huttunen, and Tuomas Virtanen. Taming the waves: sine as activation function in deep neural networks. 2016.
    Suo Qiu and Bolun Cai. Flexible rectified linear units for improving convolutional neural networks. arXiv preprint arXiv:1706.08098, 2017.
    Sachin Ravi and Hugo Larochelle. Optimization as a model for few-shot learning. 2016.
    Esteban Real, Sherry Moore, Andrew Selle, Saurabh Saxena, Yutaka Leon Suematsu, Quoc Le, and Alex Kurakin. Large-scale evolution of image classifiers. arXiv preprint arXiv:1703.01041, 2017.
    Olga Russakovsky, Jia Deng, Hao Su, Jonathan Krause, Sanjeev Satheesh, Sean Ma, Zhiheng Huang, An- drej Karpathy, Aditya Khosla, Michael Bernstein, et al. Imagenet large scale visual recognition challenge. International Journal of Computer Vision, 115(3):211–252, 2015.
    Jurgen Schmidhuber. Evolutionary principles in self-referential learning. On learning how to learn: The meta-meta-… hook.) Diploma thesis, Institut f. Informatik, Tech. Univ. Munich, 1987.
    John Schulman, Filip Wolski, Prafulla Dhariwal, Alec Radford, and Oleg Klimov. Proximal policy optimization algorithms. arXiv preprint arXiv:1707.06347, 2017.
    Wenling Shang, Kihyuk Sohn, Diogo Almeida, and Honglak Lee. Understanding and improving convolutional neural networks via concatenated rectified linear units. In International Conference on Machine Learning, pp. 2217–2225, 2016.
    Rupesh Kumar Srivastava, Klaus Greff, and Ju ̈rgen Schmidhuber. Highway networks. arXiv preprint arXiv:1505.00387, 2015.
    Christian Szegedy, Vincent Vanhoucke, Sergey Ioffe, Jon Shlens, and Zbigniew Wojna. Rethinking the incep- tion architecture for computer vision. In The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), June 2016.
    Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, and Alexander A Alemi. Inception-v4, inception-resnet and the impact of residual connections on learning. In AAAI, pp. 4278–4284, 2017.
    Sebastian Thrun and Lorien Pratt. Learning to learn. Springer Science & Business Media, 2012.
    Tijmen Tieleman and Geoffrey Hinton. Lecture 6.5-rmsprop: Divide the gradient by a running average of its recent magnitude. COURSERA: Neural networks for machine learning, 4(2):26–31, 2012.
    Aaron van den Oord, Nal Kalchbrenner, Lasse Espeholt, Oriol Vinyals, Alex Graves, et al. Conditional image generation with pixelcnn decoders. In Advances in Neural Information Processing Systems, pp. 4790–4798, 2016.
    Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Lukasz Kaiser, and Illia Polosukhin. Attention is all you need. In Advances in Neural Information Processing Systems, 2017.
    Jane X Wang, Zeb Kurth-Nelson, Dhruva Tirumala, Hubert Soyer, Joel Z Leibo, Remi Munos, Charles Blundell, Dharshan Kumaran, and Matt Botvinick. Learning to reinforcement learn. arXiv preprint arXiv:1611.05763, 2016.
    Yuhuai Wu, Saizheng Zhang, Ying Zhang, Yoshua Bengio, and Ruslan R Salakhutdinov. On multiplicative integration with recurrent neural networks. In Advances in Neural Information Processing Systems, pp. 2856–2864, 2016.
    Bing Xu, Naiyan Wang, Tianqi Chen, and Mu Li. Empirical evaluation of rectified activations in convolutional network. arXiv preprint arXiv:1505.00853, 2015.
    Sergey Zagoruyko and Nikos Komodakis. Wide residual networks. In British Machine Vision Conference, 2016.
    Zhao Zhong, Junjie Yan, and Cheng-Lin Liu. Practical network blocks design with q-learning. arXiv preprint arXiv:1708.05552, 2017.
    Guorui Zhou, Chengru Song, Xiaoqiang Zhu, Xiao Ma, Yanghui Yan, Xingya Dai, Han Zhu, Junqi Jin, Han Li, and Kun Gai. Deep interest network for click-through rate prediction. arXiv preprint arXiv:1706.06978, 2017.
    Barret Zoph and Quoc V Le. Neural architecture search with reinforcement learning. In International Confer- ence on Learning Representations, 2016.
    Barret Zoph, Vijay Vasudevan, Jonathon Shlens, and Quoc V Le. Learning transferable architectures for scal- able image recognition. arXiv preprint arXiv:1707.07012, 2017.

    展开全文
  • 目录前言一、背景二、方法:自动搜索技术三、Swish 激活函数四、PyTorch实现 前言 论文地址: https://arxiv.org/pdf/1710.05941.pdf. Swish的优点有: 1.无上界(避免过拟合) 2. 有下界(产生更强的正则化效果) ...

    在这里插入图片描述

    前言

    论文地址: https://arxiv.org/pdf/1710.05941.pdf.

    Swish的优点有:

    1.无上界(避免过拟合)
    2. 有下界(产生更强的正则化效果)
    3. 平滑(处处可导 更容易训练)
    4. x<0具有非单调性(对分布有重要意义 这点也是Swish和ReLU的最大区别)。

    一、背景

    \qquad 在深度神经网络中选择合适的激活函数对网络的动态训练和任务的性能具有显著的影响。因为每个深度神经网络的核心都是进行线性变换,然后紧接一个激活函数 f ( ⋅ ) f(\cdot) f(),激活函数在训练神经网络的过程中扮演着非常重要的角色。

    \qquad 现在最受欢迎被大家广泛接受的激活函数是 修正线性单元 Rectified Linear Unit (ReLU) 激活函数。使用 ReLU激活函数的网络一般会比使用 Sigmoid 活着 Tanh的网络更容易优化,因为当输入x为正时,梯度是线性的。而且因为 ReLU 函数的简单性和高效性,我们常常把ReLU激活函数当成一个默认的激活函数用在我们的神经网络训练过程中。

    \qquad 但是今年来,也有人不断的尝试手动设计一些激活函数,虽然这些激活函数在某些特定的模型或者特定的数据集当中取得了不错的效果,但是仍然无法手动找到一个可以像ReLU激活函数那样可以在广泛的数据集或者模型当中取得不错效果的激活函数。

    \qquad 而我们的这次的工作就是使用自动搜索技术自动的搜索最佳的激活函数(多个一元或者二元函数组合)。

    二、方法:自动搜索技术

    \qquad 这里的自动搜索技术就是一个类似NAS的自动搜索最佳匹配方案的一个搜索技术。将一些一元和二元函数组合在一起组成一个搜索空间,这个搜索空间的设计最大的挑战就是要同时考虑效率和性能,所以我们尽量的将一些简单的一元函数或者二元函数组合成一个简单的搜索空间。用到的一元函数和二元函数如下:
    在这里插入图片描述
    \qquad 具体的搜索技术我就不再介绍了,因为这个不是本文的重点,而且还需要极大的算力资源。我们直接说搜索结果好了。
    在这里插入图片描述
    \qquad 如上图,是我们搜索到的一些效果不错的一些激活函数,纵观这些函数,我们可以总结以下几点发现(设计激活函数的准则):

    1. 复杂的激活函数性能始终要低于简单的激活函数的性能。可能是因为复杂的激活函数优化难度增加。最好的激活函数一般都是由一到两个核心单元组成。
    2. 一般使用原始预激活x(raw preactivation x)作为最终的二元函数的输入效果会比较好
    3. 使用除法的效果一般都会比较差,因为一旦分母趋于0时输出就会爆炸(梯度爆炸)
    4. 常常会使用一些周期函数(periodic functions),如 sin 或 cos等。

    \qquad 为了验证这些激活函数的普适性,在这之后作者又在很多模型和数据集上做了实验,如下图,发现只有激活函数 S w i s h ( x ) = x ⋅ σ ( β x ) Swish(x)=x \cdot \sigma(\beta x) Swish(x)=xσ(βx) m a x ( x , σ ( x ) ) max(x, \sigma(x)) max(x,σ(x))的性能在众多的模型和函数中都表现的优于ReLU激活函数,而且 S w i s h ( x ) = x ⋅ σ ( β x ) Swish(x)=x \cdot \sigma(\beta x) Swish(x)=xσ(βx)的性能优于 m a x ( x , σ ( x ) ) max(x, \sigma(x)) max(x,σ(x))。所以我们下面再对 S w i s h ( x ) Swish(x) Swish(x)激活函数作进一步的分析。

    在这里插入图片描述

    三、Swish 激活函数

    公式: S w i s h ( x ) = x ⋅ σ ( β x ) = x ⋅ 1 1 + e − β x Swish(x) = x \cdot \sigma(\beta x) = x \cdot \frac{1}{1 + e^{-\beta x}} Swish(x)=xσ(βx)=x1+eβx1 ,其中 β \beta β是一个常数或者可训练的参数

    在这里插入图片描述

    如上图为不同参数下的 S w i s h ( x ) Swish(x) Swish(x) 函数,可以看到:

    • β = 1 \beta=1 β=1 时,则Swish等效于Elfwing等人的Sigmoid加权线性单元(SiL),其被提议用于强化学习。
    • β = 0 \beta=0 β=0 时,则Swish变为缩放线性函数 x 2 \frac{x}{2} 2x
    • β − > ∞ \beta->\infty β> 时,sigmoid组件变成接近0-1函数,因此Swish变得像ReLU一样的函数。

    总结:由此可见 S w i s h ( x ) Swish(x) Swish(x) 函数是介于线性函数和 ReLU 函数之间进行线性插值的函数,而参数 β \beta β 则控制插值的程度。

    而且从图中也可以看出:

    • 和ReLU函数一样,Swish函数也是一个无上界(避免梯度饱和)有下界(产生更强的正则化效果)的函数。
    • 和ReLU函数不一样的是,Swish函数还是一个平滑(处处可导 更易训练)且非单调(很重要)的函数。

    当 x>0 时,通过对函数求一阶导可知:

    在这里插入图片描述
    \qquad β = 1 \beta=1 β=1时, Swish函数具有同ReLU函数一样的性质:梯度保持性(平滑性),即当x>0时,处处可导(这点从上面的一阶导数函数图也可以看出来)。这可以证明直接取 β = 1 \beta=1 β=1 这是有效的(实践中也通常是取1,证明是有效果的),但是 β \beta β的最佳效果并不一定是取1。

    当x<0 时,由下图也可以看出函数的大部分都落在了区间(-5,0)之间,且呈峰形分布(不单调),这也可以表面Swish函数的非单调性是一个很重要的性质。
    在这里插入图片描述
    在实验过程(代码)中,我们一般都是直接令 β = 1 \beta=1 β=1的。

    \qquad 最后,整理下Swish的优点有:无上界(避免过拟合)、有下界(产生更强的正则化效果)、平滑(处处可导 更容易训练)、x<0具有非单调性(对分布有重要意义 这点也是Swish和ReLU的最大区别)。

    四、PyTorch实现

    普通的Swish:

    class SiLU(nn.Module): 
        # SiLU/Swish
        # https://arxiv.org/pdf/1606.08415.pdf
        @staticmethod
        def forward(x):
            return x * torch.sigmoid(x)  # 默认参数 = 1
    

    还有一种更高效的Swish实现方式:

    class MemoryEfficientSwish(nn.Module):
        # 节省内存的Swish 不采用自动求导(自己写前向传播和反向传播) 更高效
        class F(torch.autograd.Function):
            @staticmethod
            def forward(ctx, x):
                # save_for_backward会保留x的全部信息(一个完整的外挂Autograd Function的Variable),
                # 并提供避免in-place操作导致的input在backward被修改的情况.
                # in-place操作指不通过中间变量计算的变量间的操作。
                ctx.save_for_backward(x)
                return x * torch.sigmoid(x)
    
            @staticmethod
            def backward(ctx, grad_output):
                # 此处saved_tensors[0] 作用同上文 save_for_backward
                x = ctx.saved_tensors[0]
                sx = torch.sigmoid(x)
                # 返回该激活函数求导之后的结果 求导过程见上文
                return grad_output * (sx * (1 + x * (1 - sx)))
    
        def forward(self, x): # 应用前向传播方法
            return self.F.apply(x)
    

    另外还有一种和Swish函数很像的函数:hard-swish

    公式: h a r d − s w i s h ( x ) = x ⋅ R e L U 6 ( x + 3 ) 6 = x ⋅ m i n ( m a x ( 0 , x + 3 ) , 6 ) 6 hard-swish(x) = x \cdot \frac{ReLU6(x+3)}{6} = x \cdot \frac{min(max(0, x+3), 6)}{6} hardswish(x)=x6ReLU6(x+3)=x6min(max(0,x+3),6)
    在这里插入图片描述

    class Hardswish(nn.Module):
        """
        hard-swish 在mobilenet v3中提出
        https://arxiv.org/pdf/1905.02244.pdf
        """
        @staticmethod
        def forward(x):
            # return x * F.hardsigmoid(x)  # for torchscript and CoreML
            return x * F.hardtanh(x + 3, 0., 6.) / 6.  # for torchscript, CoreML and ONNX
    

    Reference

    链接: 博客.

    展开全文
  • SWiSH Max 4.1已测试过直接用,不少软件都标注破解版,浪费不少时间。从很多地方收集了各种版本主语发现这个是完全干净的,可以直接用的,可以节约时间。
  • 支付宝:Swish Omnipay PHP付款处理库的Swish驱动程序 是适用于PHP 5.3+的与框架无关的多网关付款处理库。 该软件包实现了对Omnipay的Swish支持。 安装 Omnipay是通过安装的。 要安装,只需将其添加到您的composer...
  • swish max4破解版

    2013-04-01 23:11:50
    swish max4全效果免安装版,绝对能用,亲测。希望能和大家分享。
  • swish pytorch 进行一行标记,几个CSS3规则(无图像),您可以在五分钟之内完成折叠效果。 让我们看看如何。 步骤1:标记 我们将从一个空HTML文档开始; doctype,字符集声明,头,主体,通常的嫌疑人。 您还会注意...

    swish pytorch

    进行一行标记,几个CSS3规则(无图像),您可以在五分钟之内完成折叠效果。 让我们看看如何。


    步骤1:标记

    我们将从一个空HTML文档开始; doctype,字符集声明,头,主体,通常的嫌疑人。 您还会注意到,我们正在链接到Google Web Fonts API,因此我们可以使用装饰精美的Montez字体。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
    
    	<meta charset="utf-8" />
    
    	<title>Swish CSS3 folded ribbon effect.</title>
    	
    	<link href='http://fonts.googleapis.com/css?family=Montez' rel='stylesheet' type='text/css'>
    		
    </head>
    
    <body>
    
    </body>
    
    </html>

    现在,我们将添加功能区元素。 是的,一个要素,这就是我们所需要的。 在这种情况下,我们使用h1标头:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
    
    	<meta charset="utf-8" />
    
    	<title>Swish CSS3 folded ribbon effect.</title>
    	
    	<link href='http://fonts.googleapis.com/css?family=Montez' rel='stylesheet' type='text/css'>
    		
    </head>
    
    <body>
    
    	<h1 class="ribbon">Swish CSS3 folded ribbon effect.</h1>
    
    </body>
    
    </html>

    步骤2:以某种风格搅拌

    打开一个新CSS文件,链接到它的head文档,再跳进加入一些样式。

    html {	
    	background: url(black-linen.png); 	/* Black Linen http://subtlepatterns.com */
    	}
    	
    body {
    	margin: 0;
    	padding: 100px 0 0 0;
    	}
    
    .ribbon {
    	padding: 0 25px;
    	height: 80px;
    	
    	background: #c94700;
    	color: #301607;
        
    	position: relative;
    	float: left;
    	clear: left;
    	
    	font-family: 'Montez', cursive;
    	font-size: 32px;			
    	line-height: 80px;
    	text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3);
    	}

    为了演示的目的,我们从样式化html和主体开始(是的,我使用背景图像,但是功能区本身是100%无图像的)。

    然后,我们将注意力转向功能区元素。 我们给它左右一些填充,但是我们对高度(在本例中为80px)非常具体,因为我们需要在以后的折叠端复制高度。 我们还将行高指定为80px,以使文本在功能区上垂直居中。 我们浮动并清除它,以便我们可以在页面边缘显示多个。

    注意:如果出于某种原因,您不想浮动功能区,请对其进行display: inline-block; 。 这将导致它被当作内联元素处理(不会填满其父元素),同时表现得像块级元素一样,允许您定义宽度,高度,内边距,边距等。

    基本色带
    看起来已经足够好了,是吗?

    步骤3:折页

    我们将针对流行的:after伪选择器来增加倍数。 他在这里..

    .ribbon:after {
    	content: "";	
    	display: block;
    	width: 40px;
    	height: 0px;
    	
    	position: absolute;
        right: 0;
        bottom: 0px;
        z-index: 20;
    	
    	border-bottom: 80px solid #de6625;
    	border-right: 80px solid transparent;
    	}
    加倍
    看见?

    那么,我们刚刚制造的奇怪的刀片状东西到底是什么?它对我们有什么帮助? 这是边界,即:after伪元素的底部边界,我们将其厚度设为80px以匹配功能区的高度。 通过定义相邻的右边界并提供有意的透明背景(并非不常见的技巧),我们将其边缘切成45°。 我们给了它40px的宽度,它决定了矩形的末端。 图表将使这一点更加清晰:

    褶皱如何制作
    我们的元素是如何构造的

    步骤4:转台

    建立了可折叠钻头之后,我们现在需要对其进行枢轴旋转。 为此,我们将使用CSS3转换属性并对其进行旋转,如下所示:

    折痕如何旋转
    没有图表的世界会在哪里?

    默认情况下,对元素进行旋转将使其绕中心轴旋转-我们需要围绕其右下角旋转它,这就是为什么我们将其定位在功能区的右下角。

    这是更新后的语法,带有一堆特定于供应商的规则,以确保满足所有可能的浏览器的要求:

    highlight="41-50"
    .ribbon:after {
    	content: "";	
    	display: block;
    	width: 40px;
    	height: 0px;
    	
    	position: absolute;
        right: 0;
        bottom: 0px;
        z-index: 20;
    	
    	border-bottom: 80px solid #de6625;
    	border-right: 80px solid transparent;
    	
    	-webkit-transform: rotate(90deg);
        -webkit-transform-origin: right bottom;
        -moz-transform: rotate(90deg);
        -moz-transform-origin: right bottom;
        -o-transform: rotate(90deg);
        -o-transform-origin: right bottom;
        -ms-transform: rotate(90deg);
        -ms-transform-origin: right bottom;
        transform: rotate(90deg);
        transform-origin: right bottom;
    	}

    每个transform:rotate属性都会transform:rotate我们的对象扭曲90°。 每个transform-origin属性均声明要围绕右下角旋转。

    那么,看起来怎么样?

    旋转的
    甜!

    我们拥有一个简单而有效的功能区,它将很高兴在以下浏览器中呈现:

    • Firefox 3.5+
    • 歌剧10.5
    • Safari 3.1+
    • Chrome
    • IE9

    IE9之下的所有内容目前都不会与我们已应用CSS3转换相抵触,但是有一种MS过滤器形式的解决方法。 我不会在这里研究过滤器,但是如果您需要使用IE4或更高版本, 查看CSS3! 看看它们在操作中的巧妙示例。


    第5步:黑影飘落

    为了给效果添加一些尺寸,让我们在襟翼下方放置一个阴影(我仍然不知道该怎么称呼)。

    这再简单不过了,我们将使用功能区中的:before伪元素,然后或多或少地重复我们对:after所做的工作; 创建黑色版本的形状,将其稍微旋转一点,并确保(使用z-index )将其放置在原始形状下。

    .ribbon:before {
    	content: "";	
    	display: block;
    	width: 40px;
    	height: 0px;
    	
    	position: absolute;
        right: 0;
        bottom: 0px;
        z-index: 10;
    	
        border-bottom: 80px solid #000000;
    	border-right: 80px solid transparent;
    	
    	-webkit-transform: rotate(80deg);
        -webkit-transform-origin: right bottom;
        -moz-transform: rotate(80deg);
        -moz-transform-origin: right bottom;
        -o-transform: rotate(80deg);
        -o-transform-origin: right bottom;
        -ms-transform: rotate(80deg);
        -ms-transform-origin: right bottom;
        transform: rotate(80deg);
        transform-origin: right bottom;
    	}

    这是我们得到的:

    阴影

    第6步:微妙,真实的微妙

    最好的办法是通过缩短阴影并使其不透明来降低阴影的效果。

    .ribbon:before {
    	content: "";	
    	display: block;
    	width: 20px;
    	height: 0px;
    	
    	position: absolute;
        right: 0;
        bottom: 0px;
        z-index: 10;
    	
        border-bottom: 80px solid rgba(0, 0, 0, 0.3);
    	border-right: 80px solid transparent;

    我们已经将#000000的边框颜色替换为它的RGBA等效色,(再次)对于所有上述现代浏览器(包括IE9)都很好。 如果要满足IE的早期版本,则需要再次使用MS过滤器应用效果。 以下代码段是一个示例:

    /* required to trigger hasLayout for IE 5, 6, 7 */
       	zoom: 1;
       	
       	/* and this makes the whole lot 30% opaque */
        filter: alpha(opacity=30);

    我们还向功能区本身添加一个类似的阴影。

    .ribbon {
    	padding: 0 25px;
    	height: 80px;
    	
    	background: #c94700;
    	color: #301607;
        
    	position: relative;
    	float: left;
    	clear: left;
    	
    	font-family: 'Montez', cursive;
    	font-size: 32px;			
    	line-height: 80px;
    	text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3);
    	
    	-moz-box-shadow:        -7px 7px 0px rgba(0, 0, 0, 0.3); 
        -webkit-box-shadow:    	-7px 7px 0px rgba(0, 0, 0, 0.3); 
        box-shadow:             -7px 7px 0px rgba(0, 0, 0, 0.3);
    	}

    ..这给了我们这个:

    微妙的阴影

    第7步:突出显示

    我们已经建立了有效的功能区,您可能希望按原样使用它。 在我们称之为完成交易之前,让我们先来看几个其他方面。

    .ribbon {
    	padding: 0 25px;
    	height: 80px;
    	
    	color: #301607;
    	
    	background-color: #c94700;
        background-image: -webkit-gradient(linear, left top, left bottom, from(#c94700), to(#b84100)); 
        background-image: -webkit-linear-gradient(top, #c94700, #b84100); 
        background-image:    -moz-linear-gradient(top, #c94700, #b84100); 
        background-image:     -ms-linear-gradient(top, #c94700, #b84100); 
        background-image:      -o-linear-gradient(top, #c94700, #b84100); 
        background-image:         linear-gradient(top, #c94700, #b84100);
    	
        border-bottom: 1px solid rgba(255, 255, 255, 0.3);

    在这里,我们在功能区上有一个微妙的渐变填充,并为不支持(-IE10)的浏览器提供了各种供应商前缀和background-color回退。 我们还向功能区的底部添加了带有高光边框的高光闪烁。

    .ribbon:after {
    	content: "";	
    	display: block;
    	width: 40px;
    	height: 0px;
    	
    	position: absolute;
        right: 0;
        bottom: -1px;
        z-index: 20;

    添加边框后,我们有效地将功能区提高了1px,因此我们需要将折叠的东西撞一下。

    突出

    第8步:蓬勃发展

    如果您想真正发疯,为什么不放松折叠呢? 圆角不平整和定位调整很容易做到。

    border-bottom-right-radius: 20px 5px;

    那是圆角

    bottom: 4px;
    bottom: 4px;

    这就是折叠位,加上阴影,略微抬起以说明更改。

    四舍五入
    功能区中的细微但有效的弯曲

    结论

    而已! 无话可说-试试吧,让我知道您的想法。 与往常一样,感谢您的关注!

    翻译自: https://webdesign.tutsplus.com/articles/create-a-swish-css3-folded-ribbon-in-five-minutes--webdesign-4034

    swish pytorch

    展开全文
  • 不用 Macromedia Flash 就可以制作 Flash。目前只提供一些文字效果制作,以后将有图片、声音、按钮和矢量图支持。体积虽然不大但并不难用。 非常方便的FLASH字体特效的制作工具,特效中有许多细节结合使用能得到...
  • R-Relu(随机纠正线性单元) Swish hard-Swish Mish Maxout 关于激活函数统一说明 参考链接 因为深度学习模型中其它的层都是线性的函数拟合,即便是用很深的网络去拟合,其还是避免不了线性的特性,无法进行非线性...
  • ReLU函数的变型 Leaky ReLU 函数中的a为常数,一般设置为0.01 PReLU 函数中a作为一个可学习的参数,会在训练过程中更新 Swish Swish激活函数具备无上界有下届、平滑、非单调的特性,Swish在深层模型上效果优于ReLU...
  • 激活函数Swish

    万次阅读 2020-05-21 18:36:23
    激活函数Swish系列文章:   Swish函数先对来说是比较新的一些激活函数,算是由之前的激活函数复合而成出来的。也是由Google提出的,毕竟资力雄厚,承担的起搜索的任务。而且这个算法感觉曝光率还算比较高,就在...
  • Swish & hard-Swish

    千次阅读 2020-01-04 13:32:17
    当β = 0时,Swish变为线性函数f(x)=x/2 β → ∞, σ(x)=(1+exp(−x))−1σ(x)=(1+exp⁡(−x))−1为0或1. Swish变为ReLU: f(x)=2max(0,x) 所以Swish函数可以看做是介于线性函数与ReLU函数之间的平滑函数. beta是个...
  • Swish是一个网络库,特别用于通过Decodable请求和解码JSON。 它基于协议,因此旨在易于测试和自定义。 版本兼容性 这是当前的Swift兼容性细分: 迅捷版 Swish版本 5倍 > = 4.0.0 4倍 > = 3.0.0 3.倍 > 2.0,<...
  • Swish 的设计受到了 LSTM 和高速网络中gating的sigmoid函数使用的启发。我们使用相同的gating值来简化gating机制,这称为self-gating。 Swish(x)=x∗Sigmoid(x)\text{Swish}(x)=x*Sigmoid(x)Swish(x)=x∗Sigmoid(x) ...
  • SWISH

    2021-11-15 19:34:25
    ①基础符号: :- 输出 \+ 非 ②判断是否匹配+文字备注 例1(未匹配成功) 例2(输出a所在的list:N?) 例3
  • swish激活函数具有:无上界、有下界、平滑、非单调等特点,可使神经网络层具有更丰富的表现能力。但swish函数有个缺点,计算量比较大,其函数表达式如下: 式中贝塔为可训练参数。 为了适应轻量级网络使用,...
  • swish,mish

    千次阅读 2019-11-15 13:31:15
    swish 2.swish 其中σ(x)是sigmoid函数,swish是光滑而且单调的,swish的导数是: swish的第一和第二导数如图2所示: 无界性避免了饱和,函数饱和区域的梯度很小,训练非常缓慢,因此网络必须小心的初始化才能...
  • swish激活函数

    千次阅读 2020-07-03 14:48:06
    swish和mish激活函数函数公式函数图像函数特点对比mish激活函数 函数公式 函数图像 当β\betaβ取不同的值时,函数图像如下: 当β\betaβ = 0时,Swish激活函数变为线性函数 f(x) = x2\frac{x}{2}2x​, 当β\...
  • Swish激活 hswish激活

    千次阅读 2020-04-17 16:00:33
    激活函数h-swish是MobileNet V3相较于V2的一个创新,是在谷歌大脑2017年的论文Searching for Activation Functions中swish函数的基础上改进而来,用于替换V2中的部分ReLU6。 swish的作者认为,该函数具有无上界、有...
  • Swish1.5

    2008-06-22 10:43:21
    Flash的插件Swish1.5内含注册码,很方便做出许多常用效果
  • Swish 简体中文版 1.5

    2015-07-29 14:52:14
    特别好用的一个小巧的flash制作工具,可以制作字符各种特效动画
  • 激活函数——Swish

    2020-07-08 15:53:03
    β是个常数或可训练的参数.Swish 具备无上界有下界、平滑、非单调的特性。 Swish 在深层模型上的效果优于 ReLU。例如,仅仅使用 Swish 单元替换 ReLU 就能把 Mobile NASNetA 在 ImageNet 上的 top-1 分类准确率提高 ...
  • SWISH2 动画制作

    2014-03-24 10:58:33
    相比于Flash的“专业”,SWISH的简约是你制作小动画的不二之选,制作属于自己的动漫贺卡,送亲朋,送好友吧!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,564
精华内容 1,025
关键字:

swish