tensorflow 1.14下keras的一个BUG AttributeError: 'TFOptimizer' object has no attribute 'lr'

本文探讨了在使用Keras框架构建CNN网络时遇到的与TensorFlow优化器兼容性问题,特别是在尝试使用ReduceLROnPlateau回调函数动态调整学习率时。文章详细介绍了如何解决'TFOptimizer'objecthasnoattribute‘lr’这一错误,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在写CNN网络的时候使用keras框架可以更加简单、方便。而tensorflow也集合了keras模块,但似乎两者之间还有一点不兼容的部分。

keras框架下我们可以利用各种call_back函数来做很多事,比如动态调整学习率,用到的函数为 keras.callbacks.ModelCheckpoint ,该函数在模型训练的时候可以在loss不再收敛时,调小学习率。但此时如果我们使用tensorflow下的optimizers时会出现’TFOptimizer’ object has no attribute ‘lr’ 代码如下:

from tensorflow.keras.models import Model
from tensorflow.keras.callbacks import ReduceLROnPlateau
import keras

reduce_lr = ReduceLROnPlateau(monitor='val_loss', 
                              factor=0.2,
                              patience=5, 
                              min_lr=0.001)
model1 = Model(inputs = inputs, outputs = outputs) #定义网络模型
optimizer = tensorflow.train.AdamOptimizer()  #或者
optimizer = tensorflow.keras.optimizers.Adam()
model1.compile(loss = 'mse', optimizer = optimizer)
model1.fit(x, y, callbacks = check_point)

tensoflow下的TFOptimizer没有lr,而keras下的optimizer则有lr这个属性,此时,如果我们改成:

optimizer = keras.optimizers.Adam()

则会编译错误
但如果我们不使用tensorflow下的keras,即:

from keras.models import Model
from keras.callbacks import ReduceLROnPlateau
import keras

则可以成功运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值