如何在TF2.0中的`tf.Module`中初始化变量

在Tensorflow2.0中,我发现可以通过以下方式初始化模型中的变量

class MyModel(tf.keras.Model):
    def __init__(self,*args,kwargs**):
        """ some definition here """
        self(tf.keras.Input(shape=(3,)))

    def call(self,x):
        """ some implementation """        

但是我不能做

class MyModel(tf.keras.Model):
    def __init__(self,kwargs**):
        """ some definition here """
        self.step(tf.keras.Input(shape=(3,)))

    def step(self,x):
        """ some implementation """        

这将导致错误

如何在TF2.0中的`tf.Module`中初始化变量

我想做第二个原因的原因是我尝试从MyModel继承tf.Module,而__call__没有可用的tf.Module ---即使定义了一个,也会出现相同的错误。我想知道是否可以像在第一个代码块中那样初始化从{ "Statement": [ { "Effect": "Allow","action": [ "ec2:Createsnapshot","ec2:Createtags","ec2:Deletesnapshot","ec2:Describesnapshots","ec2:Describetags" ],"Resource": [ "*" ] } ] } 继承的类中的变量?

zhanghuiqingIT 回答:如何在TF2.0中的`tf.Module`中初始化变量

可悲的是Keras功能/符号API仅与Keras(例如compile + fit)兼容。

您可能可以改为使用src > typings > index.d.ts(例如src > typings > moduleA > index.d.ts),尽管这可能会带来不良的副作用(例如,影响批次规范统计信息)。

如果您想要一个可靠的解决方案,则可能要考虑使用Sonnet 2(包含一堆常见src > typings > moduleB > index.d.ts的库)中的实用程序功能tf.zeros [0]。

[0] https://github.com/deepmind/sonnet/blob/v2/sonnet/src/build.py#L50

本文链接:https://www.f2er.com/3138183.html

大家都在问