0
カスタムレイヤーを書きたいと思います。ここでは、実行の間に変数をメモリに保持できます。私はm.predict
を実行すると は例えば、ケラスカスタムレイヤーの永続変数
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,)))
は、私はpersistent_variable
が更新されますことを期待し、インクリメント値を印刷します。それは常に私の質問がある0
# Dummy input
x = np.zeros(1)
m.predict(x, batch_size=1)
印刷しますよう は、しかし、それは、どのように私はpersistent_variable
増分を作り、m.predict
感謝のすべての実行後に保存しないに見え、 のNaveen
こんにちはPhylliida、 が正解のように見えます。しかし、それは時々動作しません。 'a = model.predict(np.random.rand(100、10)、batch_size = 1) print(a)' '[0.1]を実行しました。 。9. 10. 10. 11. ....] ' 何度か更新がありません。 –
これは何らかの競合状態かもしれません。私は実際に申し訳ありませんが、他の誰かが知っているかどうかを見るために待つことができます – Phylliida
あなたは正しいです。ケラスに競合状態が存在する可能性があります。 'CounterLayer'の後に' RepeatVector'レイヤーを追加しました。 –