tensorflow:与批处理时间相比,回调方法'on_train_batch_end'的速度较慢

tensorflow:与批处理时间相比,回调方法'on_train_batch_end'的速度较慢,tensorflow,keras,conv-neural-network,Tensorflow,Keras,Conv Neural Network,我正在尝试使用随机搜索创建CNN模型,但速度非常慢,并弹出此错误tensorflow:train\u batch\u end上的回调方法与批处理时间相比速度较慢 我正在谷歌colab上运行我的代码,并在gpu上设置了硬件加速 这是我的密码 def model_builder(hp): model=Sequential([ Conv2D(filters=hp.Int('conv_1_filter',min_value=32,max_value=128,step=32),

我正在尝试使用随机搜索创建CNN模型,但速度非常慢,并弹出此错误
tensorflow:train\u batch\u end上的回调方法与批处理时间相比速度较慢
我正在谷歌colab上运行我的代码,并在gpu上设置了硬件加速 这是我的密码

def model_builder(hp):
    model=Sequential([
        Conv2D(filters=hp.Int('conv_1_filter',min_value=32,max_value=128,step=32),
               kernel_size=hp.Int('conv_1_filter',min_value=2,max_value=3,step=1),
               activation='relu',
               padding='same',
               input_shape=(200,200,3)),
        MaxPooling2D(pool_size=(2,2),strides=(2,2)),
        
        Conv2D(filters=hp.Int('conv_2_filter',min_value=32,max_value=128,step=32),
               kernel_size=hp.Int('conv_2_filter',min_value=2,max_value=3,step=1),
               padding='same',
               activation='relu'),
        MaxPooling2D(pool_size=(2,2),strides=(2,2)),
        
        Flatten(),
        
        Dense(units=hp.Int('dense_1_units',min_value=32,max_value=512,step=128),
              activation='relu'),
        
        Dense(units=10,
              activation='softmax')
               
    ])
    
    model.compile(optimizer=Adam(hp.Choice('learning_rate',values=[1e-1,1e-3,3e-2])),
                  loss='sparse_categorical_crossentropy',
                  metrics=['accuracy'])
    return model
然后随机搜索和拟合

tuner=RandomSearch(model_builder,
                   objective='val_accuracy',
                   max_trials=2,
                   directory='projects',
                   project_name='Hypercars CNN'
                  )
tuner.search(X_train,Y_train,epochs=2,validation_split=0.2)

这是由于在每个批处理结束时运行的其他操作比批处理本身消耗的时间更多。 这可能是因为您的批次非常小,即任何操作都比原始批次慢

增加批大小应该可以解决这个问题,或者您可以
model.fit()中使用_mutiprocessing=TRUE
,并选择适当数量的工人,以更有效地生成培训批

讨论此问题的两个线程:


  • 我知道了谢谢