当前,我正在使用GPU训练模型。我发现nvidia-smi命令的GPU使用率低于10%的问题。 定义make_model:
def make_model(dense_layer_sizes, dim):
K.clear_session()
model = Sequential()
for layer_size in dense_layer_sizes:
model.add(Dense(layer_size, activation='relu', input_dim=dim))
model.add(Dense(1, activation='sigmoid'))
model = multi_gpu_model(model, gpus=2)
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
return model
培训模式:
dense_size_candidates = [[64], [64, 64], [64, 64, 64], [128], [128, 128], [128, 128, 128], [256], [256, 256], [256, 256, 256]]
my_classifier = KerasClassifier(make_model, batch_size=1024*10)
cvModel = GridSearchCV(my_classifier,
param_grid={'dense_layer_sizes': dense_size_candidates,
'dim': [300],
'epochs': [10]},
cv=5,
verbose=10,
scoring='roc_auc',
n_jobs=1)
cvModel.fit(train_vecs, y_train)
我尝试调整batch_size和learning_rate,但没有解决此问题。因此,我使用tensorflow Dataset API输入train_vecs。当我使用时:
dataset = tf.data.Dataset.from_tensor_slices(train_vecs)
问题是“无法创建内容大于2gb的张量原型”,train_vecs是巨大的数据集,是Gensim训练的语料向量,大于4g。此外,如何将TensorFlow的数据集API与Keras配合使用?