如何修复tensorflowgpu==2.0beta1中的内存泄漏?

2024-10-01 00:17:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我测试了分类结构化数据教程。URL

我修改了代码来改变宽深模型。在

def df_to_dataset(dataframe, label, shuffle=True, batch_size=32):
    dataframe = dataframe.copy()
    labels = label.copy()
    ds = tf.data.Dataset.from_tensor_slices((dict(dataframe), labels.values))
    if shuffle:
        ds = ds.shuffle(buffer_size=len(dataframe))
    ds = ds.batch(batch_size)
    gc.collect()
    return ds
train_ds = df_to_dataset(train, train_y ,  batch_size=batch_size)
dnn_hidden_units = [2048 , 1024 , 512 ]
reg = keras.regularizers.L1L2(l1=0.01, l2=0.01)
for layerno, numnodes in enumerate(dnn_hidden_units):
    deep = tf.keras.layers.Dense(numnodes, 
                                 activation=None , 
                                 kernel_regularizer=reg , 
                                 name='dnn_{}'.format(layerno+1))(deep)        
    deep = keras.layers.BatchNormalization(name = "dnn_BN_{}".format(layerno+1))(deep)
    deep = keras.layers.Dropout(0.3, name = "dnn_Drop_{}".format(layerno+1))(deep)
    deep = keras.layers.LeakyReLU(0.2 , name = "dnn_LR_{}".format(layerno+1))(deep)
both = tf.keras.layers.concatenate([deep, wide], name='both')
output = tf.keras.layers.Dense(884, activation='sigmoid', name='pred')(both)
model = tf.keras.Model(inputs, output)

model.compile(optimizer='adam',
              loss=focal_loss   , # focal_loss  ,  # 'binary_crossentropy',
              metrics=[ binary_accuracy ]) 

model.load_weights('var/disk/WideDeep_TF2/my_checkpoint')
model.fit(train_ds,
          validation_data=val_ds,
          callbacks = [Board , lr_sched  ] , # cp_callback , 

          validation_freq=10 ,
          #class_weight = class_weight,
          epochs=100)

它是有效的,但记忆在每一个时代结束时都会积累起来。在

例如

历元内存(GB)
纪元1:2.0
纪元2:2.5
纪元3:3.0
纪元4:3.5

我找了很多,但找不到。在

它是否只是一个TF2.0-beta1错误?还是有问题?在

请帮帮我。在

谢谢


Tags: nameformatdataframesizemodellayerstfbatch