我正在尝试训练 Resnet50,但无论我做什么都失败了,因为 Jupyter 笔记本的内核正在死亡(The kernel appears to have died. It will restart automatically),即它开始训练的那一刻(Epoch 1/100)。我有 GeForce GTX 1060 Ti,当我nvidia-smi在训练期间(虽然持续 1 秒)我只看到与过去相比分配了 80 MB 的内存,然后内核死了,好像它尝试但它失败了。以下是要求:pandas==0.25.1numpy==1.17.2opencv-python==4.1.1.26scikit-image==0.15.0scikit-learn==0.21.3tensorflow-gpu==1.14.0Keras==2.2.5matplotlib==3.1.1Pillow==6.1.0albumentations==0.3.2tqdm==4.35.0jupyter我满足。以下是我设置培训课程的方式:config = tf.ConfigProto()config.gpu_options.allow_growth = Falseconfig.gpu_options.per_process_gpu_memory_fraction = 0.9sess = tf.Session(config=config) keras.backend.set_session(sess)keras.__version__os.environ["CUDA_VISIBLE_DEVICES"] = '0' #yes, this is the ID of my GPU.# create the FCN modelmodel_mobilenet = ResNet50(input_shape=(1024, 1024, 3), include_top=False) # use the Resnetmodel_x8_output = Conv2D(128, (1, 1), activation='relu')(model_mobilenet.layers[-95].output)model_x8_output = UpSampling2D(size=(8, 8))(model_x8_output)model_x8_output = Conv2D(3, (3, 3), padding='same', activation='sigmoid')(model_x8_output)MODEL_x8 = Model(inputs=model_mobilenet.input, outputs=model_x8_output)MODEL_x8.compile(loss='binary_crossentropy', optimizer=Adam(lr=1e-3), metrics=[jaccard_distance])MODEL_x8.fit_generator(train_generator, steps_per_epoch=300, epochs=100, verbose=1, validation_data=val_generator, validation_steps=10)Epoch 1/100 1/300 [..............................] - ETA: 1:01:59 - loss: 0.7193 - jaccard_distance: 0.1125我试过设置:config.gpu_options.allow_growth到True.config.gpu_options.per_process_gpu_memory_fraction到任何其他任意值,例如0.1注释掉:#os.environ["CUDA_VISIBLE_DEVICES"] = 0他们都没有工作。我很欣赏建设性的答案。
2 回答

郎朗坤
TA贡献1921条经验 获得超9个赞
这很可能是因为没有足够的内存来存储数据/模型。您的输入图像大小也是 1024x1024。我建议您尝试使用 256 甚至 128 之类的小图像进行训练,看看它是否至少可以工作。
另外,你的 GPU 是否被 TF 检测到了?

倚天杖
TA贡献1828条经验 获得超3个赞
好,知道了。
问题是我的 tensorflow=gpu 版本(1.14)与我的 CUDA 版本(9.0)不兼容。我必须安装低于 1.13 的版本。但这不是唯一的问题。我的 CuDNN 版本 (705) 也有问题,我不得不将我的 Tensorflow-gpu 一直降低到 1.9.0。
现在一切正常。
添加回答
举报
0/150
提交
取消