【发布时间】:2017-11-28 06:09:43
【问题描述】:
我有这个示例代码,它只能使用n_jobs=1 运行。
Tensorflow 后端在 GPU 上运行。
当我在方法 cross_val_score 上使用 n_jobs=-1 运行时,程序在输出 4 行 Epoch 1/100 后卡住/停止工作或给出任何输出(因为我有一个 4 核 CPU,我假设它将使用所有 4 个内核做 CV 并且每个人都尝试在 GPU 上启动一个 tf 会话)
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import cross_val_score
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
def build_classifier():
classifier = Sequential()
classifier.add(Dense(units = 6, kernel_initializer = 'uniform', activation = 'relu', input_dim = 11))
classifier.add(Dropout(0.3))
classifier.add(Dense(units = 6, kernel_initializer = 'uniform', activation = 'relu'))
# classifier.add(Dropout(0.3))
classifier.add(Dense(units = 1, kernel_initializer = 'uniform', activation = 'sigmoid'))
classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
return classifier
classifier = KerasClassifier(build_fn = build_classifier, batch_size = 100, epochs = 100, verbose=0)
accuracies = cross_val_score(estimator = classifier, X = X_train, y = y_train, cv = 10, n_jobs = 1)
我也尝试过以这种方式限制 TF GPU 的使用,但 n_job=-1 仍然不起作用。
np.random.seed(123)
tf.set_random_seed(123)
config = tf.ConfigProto(inter_op_parallelism_threads=1)
config.gpu_options.per_process_gpu_memory_fraction = 0.1 # in my case this setting will use around 1G memory on GPU
set_session(tf.Session(config=config))
【问题讨论】:
标签: tensorflow scikit-learn keras cross-validation