我想在Keras中测试循环学习率。然而,就在第一个epoch结束时,我得到了这个TypeError错误。在这种情况下,如何正确定义循环学习率?
历元1/10000历史= www.example.com发生器(发生器=培训发生器,确认数据=校准发生器,历元= n历元,model.fit_generator(generator=training_generator,validation_data = calibration_generator, epochs = n_epoch,
510/510【==================================================================================================================================================================================================================================================0s-损失:0.0111-mae:0.0772 Traceback(最近的调用):
文件"H:\我的数据\来自驱动器C我的PC Spet_2022\Code\Phase_2_Cyclic_Learning.py",第303行,位于
hist = www.example.com_generator(generator = training_generator,validation_data calibration_generator,epochs = n_epoch,model.fit_generator(generator=training_generator,validation_data calibration_generator, epochs = n_epoch,
文件"C:\Users\bluesky\AppData\Roaming\Python\Python38\site-packages\keras\engine\training.py",第2507行,在fit_generator返回www.example.com(self.fit(
文件"C:\Users\bluesky\AppData\Roaming\Python\Python38\site-packages\keras\utils\traceback_utils. py",第70行,在错误处理程序中,将e. with_traceback(filtered_tb)从"无"提升
文件"C:\Users\bluesky\AppData\Roaming\Python\Python38\site-packages\keras\utils\generic_utils. py",第965行,在update self._values [k]=[v * value_base,value_base]中
TypeError:不支持 * 的操作数类型:'CyclicalLearningRate'和'int'
我的代码:
pip install tensorflow-addons
from tensorflow_addons.optimizers import CyclicalLearningRate
model = Sequential()
input_dim = len(input_cols_idx)
batch_size = batch_size_gen
model.add(Dense(units=hidden_layer1_neurons, input_dim= input_dim,
kernel_initializer = initializers.RandomNormal(mean=0.0, stddev=0.05)))
model.add(Activation(activation_1))
model.add(Dense(units=1))
model.add(Activation(activation_2))
# Create Cyclic Learning Rate and Callbacks
cyclical_learning_rate = CyclicalLearningRate(
initial_learning_rate=0.000008,
maximal_learning_rate=0.001,
step_size=2360,
scale_fn=lambda x: 1 / (2.0 ** (x - 1)),
scale_mode='cycle')
model.compile(loss='mean_squared_error',
optimizer=Adam(learning_rate=cyclical_learning_rate), metrics=['mae'])
checkpointer = callbacks.ModelCheckpoint(filepath=("%s/%s.h5" % (model_dir,model_name)),
monitor='val_loss', mode='min', save_best_only=True)
# val_loss
reduce = callbacks.ReduceLROnPlateau(monitor='val_mae',factor=0.25, mode='min',
patience = lr_reduce_patience, epsilon=epsilon,
cooldown=0, min_lr= min_lr) # Later versions of Keras
uses min_delta inplace of epsilon
earlystop = callbacks.EarlyStopping(monitor='val_mae', min_delta = earlystop_min_delta,
patience=earlystop_patience, verbose=0, mode='min')
csv_logger = CSVLogger('%s/%s_log.csv'%(model_dir, model_name), append=True,
separator=';')
----------培训
hist = model.fit_generator(generator=training_generator,validation_data =
calibration_generator, epochs = n_epoch,
use_multiprocessing=False, callbacks = [reduce, earlystop,checkpointer,
csv_logger]) #TensorBoard(log_dir='./logs')])
# workers=6) ,plot_losses
cost=pd.DataFrame(hist.history)
1条答案
按热度按时间qojgxg4l1#
我想我找到了解决问题的办法(在我自己与之斗争之后)。
当你删除ReduceLROnPlateau回调函数时,它对我有效(tf=2.11.0和tfa=0.19.0)。