python - 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)
解决方案
推荐阅读
- reactjs - 我如何默认检查反应中的单选按钮?
- scala - Spark Dataset joinWith API 给出错误结果
- python - volatile 已被删除,现在没有效果。改用`with torch.no_grad():`。输入变量=变量(输入,易失性=真)
- javascript - 如何使用 Composer 安装的 Javascript 或 CSS 文件?
- android - React Native - 如何获取选择器数据
- bash - 如何使用 bash 读取 yaml 或 env 文件
- sharepoint - Sharepoint 2013 工作流程:将任务状态设置为完成会导致其他任务消失
- c - 如何在 C 中使用指针访问结构成员?
- php - 如何在 php formmail 中启用 UTF-8 字符编码
- javascript - 如何在网格布局中定位最底部的容器