首页 > 解决方案 > 为什么亚当的 get_update 只执行一次?

问题描述

为什么 get_update() 不是每个时期都执行?

我的亚当:</p>

    @interfaces.legacy_get_updates_support
    def get_updates(self, loss, params):
        print("update!")
        #Other code is the same

这是编译和适合的

model.compile(optimizer=Adam(lr=2e-5),loss='binary_crossentropy',metrics=['acc'])
his = model.fit_generator(train_genertor,steps_per_epoch=100,epochs=2,validation_data=val_genertor,validation_steps=50)

出:</p>

update
Epoch 1/2
Epoch 2/2

为什么不是

update
Epoch 1/2
update
Epoch 2/2

标签: pythonkerasadam

解决方案


人们忘记的一个重要细节是 TensorFlow 的计算模型与常见的计算模型略有不同。在 TensorFlow 中,您构建一个操作图,然后使用会话对其进行评估,以提供一组实际输入来产生输出。

这与普通代码不同,在普通代码中你会一遍又一遍地调用函数。

对于get_updates任何优化器,其想法是get_updates构建运行优化器一步的操作,然后使用会话迭代评估优化器,因此get_updates只运行一次来​​构建计算图。


推荐阅读