为啥亚当的 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算法 内循环为啥只执行了一次