为啥亚当的 get_update 只执行一次?

Posted

技术标签:

【中文标题】为啥亚当的 get_update 只执行一次?【英文标题】:Why is Adam's get_update only executed once?为什么亚当的 get_update 只执行一次? 【发布时间】:2019-04-12 10:15:00 【问题描述】:

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

我的亚当:

    @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)

出来:

update
Epoch 1/2
Epoch 2/2

为什么没有

update
Epoch 1/2
update
Epoch 2/2

【问题讨论】:

您的问题是什么?问题标签不清楚。 你的问题不清楚!!请说明你想要什么 【参考方案1】:

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

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

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

【讨论】:

以上是关于为啥亚当的 get_update 只执行一次?的主要内容,如果未能解决你的问题,请参考以下文章

spring quartz配置每分钟执行一次,为啥启动项目只执行一次?

为啥 ember 计算属性只在 ember 检查器中执行一次?

《机器学习实战》 书上的Apriori算法 内循环为啥只执行了一次

在 Angular 7 中,为啥即使只订阅一次 HttpClient.post 也会执行两次?

为啥这种写法,js的setTimeout只执行一次?

Spring定时任务为啥没有执行