Керас зависает при многократном обучении нескольких моделей - PullRequest
0 голосов
/ 04 марта 2020

Я использую Windows 10, Keras (выпуск 2.3.1) и Tensorflow (выпуск 2.1.0) с CUDA (выпуск 10.1, V10.1.243) для обучения 20 остаточных сетевых моделей на данных от 20 субъектов.

К сожалению, обучение случайно останавливается в течение первой эпохи для модели k (с k <20). Иногда k = 3, иногда k = 7, а иногда k = 19. Единственный вывод, который я получаю, следующий: </p>

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

Загрузка ЦП постоянно остается на уровне 20% (если я позволю, даже в течение нескольких дней), в то время как нагрузка на графический процессор застревает на 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

Вот фрагмент моего обучения l oop:

    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) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...