首页 > 解决方案 > Keras 在迭代训练多个模型时冻结

问题描述

我正在使用 Windows 10、Keras(2.3.1 版)和 Tensorflow(2.1.0 版)和 CUDA(10.1 版,V10.1.243)来训练来自 20 个主题的数据的 20 个残差网络模型。

不幸的是,模型k(k < 20)的训练在第一个 epoch 中随机停止。有时 k=3,有时 k=7,有时 k=19。我得到的唯一输出如下:

Train on 50634 samples, validate on 5626 samples
Epoch 1/200

CPU 工作负载始终保持在 20%(如果我允许的话,即使是几天),而 GPU 工作负载则停留在 1%。正如我从任务管理器中得知的那样,导致此工作负载的任务是Python 。我已经尝试添加以下代码但没有任何成功:

import tensorflow as tf
configproto = tf.compat.v1.ConfigProto() 
configproto.gpu_options.allow_growth = True
sess = tf.compat.v1.Session(config=configproto) 
tf.compat.v1.keras.backend.set_session(sess)

任何想法都受到高度赞赏。

更新 1

这是我的训练循环的片段:

    for testSubjectID in patientIDsForTesting:
        [testX,testY,trainX,trainY] = PrepareData.groupAndReturnDataAndBinaryAnnotationsForCurrentSubject()
        [scaledTrainX,scaledTestX] = PrepareData.scaleTrainingAndTestingData(trainX,testX)
        x_trainScaledWithoutValidationSet,x_validTrainScaled,y_trainWithoutValidationSet,y_validTrain = train_test_split(scaledTrainX,trainY,test_size=0.1,shuffle= True) 
        nb_classes = len(np.unique(np.concatenate((trainY,testY),axis =0)))
        y_true = np.array(testY, dtype=np.int64)

        y_trainWithoutValidationSetNumpyArray = np.array(y_trainWithoutValidationSet)
        testYNumpyArray = np.array(testY)
        y_validTrainNumpyArray = np.array(y_validTrain)
        trainXNumpyArray = np.array(trainX)

        enc = sklearn.preprocessing.OneHotEncoder()
        enc.fit(np.concatenate((y_trainWithoutValidationSetNumpyArray,testY),axis =0).reshape(-1,1))
        y_trainWithoutValidationSet = enc.transform(y_trainWithoutValidationSetNumpyArray.reshape(-1,1)).toarray()
        y_test = enc.transform(testYNumpyArray.reshape(-1,1)).toarray()
        y_valid = enc.transform(y_validTrainNumpyArray.reshape(-1,1)).toarray()

        scaledTestX = scaledTestX.reshape((scaledTestX.shape[0],scaledTestX.shape[1],1))
        x_validScaled = x_validTrainScaled.reshape((x_validTrainScaled.shape[0],x_validTrainScaled.shape[1],1))

        input_shape = x_trainScaledWithoutValidationSet.shape[1:] #x_trainScaled.shape[1:]
        Classifier = getResNetClassifier()
        Classifier.fit(x_trainScaledWithoutValidationSet,y_trainWithoutValidationSet,x_validScaled,y_valid,y_true) 

标签: pythontensorflowkeras

解决方案


推荐阅读