ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

在调用像Activation(‘relu’)(X)这样的类时,它实际上如何工作?

2019-11-09 01:57:50  阅读:12  来源: 互联网

标签:keras python



在学习Keras的同时,我总是看到像Activation(‘relu’)(X)这样的语法.我查看了源代码,发现Activation是一个类,所以对我来说,像Class(…)(…)这样的语法的工作原理并没有任何意义.

这是一个example,它的用例:A = Add()([A1,A2])

解决方法:

在Keras中,它比普通的Python更令人费解.让我们分解一下在调用Activation(‘relu’)(X)时发生的情况:

> Activation(‘relu’)通过调用类__init__ method创建该类的新对象.这将创建以’relu’作为参数的对象.
>通过实现__call__,您可以像调用函数一样调用Python中的所有对象.现在,Activation(‘relu’)(X)使用X作为参数调用该函数.
>但是,等等,激活并没有直接实现它,实际上它是基类Layer .__ call__被调用,它会进行一些检查,例如形状匹配等.
>然后Layer .__ call__实际上是calls self.call(X),它随后调用Activation.call method,后者将激活应用于张量并返回结果.

希望能够澄清这一行代码,在创建其他层并使用功能性API调用它们时也会发生类似的过程.



标签:keras,python

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有