3

実行間で変数をメモリに保持できるカスタムレイヤーを作成したいと思います。例えば、

class MyLayer(Layer):
def __init__(self, out_dim = 51, **kwargs):
    self.out_dim = out_dim
    super(MyLayer, self).__init__(**kwargs)

def build(self, input_shape):
    a = 0.0
    self.persistent_variable = K.variable(a)
    self.built = True

def get_output_shape_for(self, input_shape):
    return (input_shape[0], 1)

def call(self, x, mask=None):
    a = K.eval(self.persistent_variable) + 1
    K.set_value(self.persistent_variable, a)
    return self.persistent_variable

m = Sequential()
m.add(MyLayer(input_shape=(1,)))

を実行すると、 が更新され、インクリメントされた値が出力されることm.predictを期待しています。persistent_variableしかし、それは常に印刷されるようです0

# Dummy input
x = np.zeros(1)

m.predict(x, batch_size=1)

私の質問は、persistent_variable実行するたびにインクリメントして保存する方法ですm.predict

ありがとう、ナビーン

4

2 に答える 2