Я строю модель с 4 VGG16 (не включая верхнюю), а затем объединяю 4 выхода из 4 VGG16, чтобы сформировать плотный слой, за которым следует слой softmax, поэтому моя модель имеет 4 входа (4 изображения) и 1 выход. (4 класса).
Сначала я выполняю переносное обучение, просто тренируя плотные слои и замораживая слои из VGG16, и это отлично работает.
Однако после разморозки слоев VGG16, установив layer.trainable = True
, я получаю следующие ошибки:
tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
2018???????? 23:12:28.501894: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Found device 0 with properties:
name: GeForce GTX TITAN X major: 5 minor: 2 memoryClockRate(GHz): 1.076
pciBusID: 0000:0a:00.0
totalMemory: 11.93GiB freeMemory: 11.71GiB
2018???????? 23:12:28.744990: I
tensorflow/stream_executor/cuda/cuda_dnn.cc:444] could not convert BatchDescriptor {count: 0 feature_map_count: 512 spatial: 14 14 value_min: 0.000000 value_max: 0.000000 layout: BatchDepthYX} to cudnn tensor descriptor: CUDNN_STATUS_BAD_PARAM
Затем я следую решению в эту страницу и установите os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
. Первая ошибка исчезла, но я все равно получаю вторую ошибку:
keras tensorflow/stream_executor/cuda/cuda_dnn.cc:444 could not convert BatchDescriptor to cudnn tensor descriptor: CUDNN_STATUS_BAD_PARAM
Если я снова заморозю слои VGG16, тогда код будет работать нормально. В других работах эти ошибки возникают только тогда, когда я устанавливаю обучаемые слои VGG16.
Я также построил модель только с одним VGG16, и эта модель также отлично работает.
Итак, в общем, только когда я размораживаю слои VGG16 в модели с 4 VGG16, я получаю эти ошибки.
Любые идеи, как это исправить?