когда я использую предварительно обученную модель keras VGG16 для получения функции узкого места в функции tf.dataset.map, у меня возникает эта проблема
vgg16 = VGG16(include_top=False, input_shape=input_shape)
vgg16.trainable = False
def _parse_function(example_proto):
features = {'img': tf.FixedLenFeature((), tf.string, default_value=""),
'label': tf.FixedLenFeature((), tf.int64, default_value=0)}
parsed_features = tf.parse_single_example(example_proto, features)
img = tf.decode_raw(parsed_features['img'], tf.uint8)
img = tf.reshape(img, (224, 224, 3))
img = tf.cast(img, tf.float32) / 255.0
img = tf.expand_dims(img, 0)
img = vgg16(img)
img = tf.squeeze(img, [0])
label = parsed_features['label']
return img, label
ds.map(_parse_function)
ошибка печати
2019-06-19 13: 47: 19.378807: E tenorflow / core / common_runtime / executor.cc: 624] Исполнителю не удалось создать ядро. Неверный аргумент: по умолчанию MaxPoolingOp поддерживает только NHWC на устройстве типа CPU
[[{{node vgg16 / block1_pool / MaxPool}}]]
2019-06-19 13: 47: 19.379204: W tenorflow / core / framework / op_kernel.cc: 1401] Сбой OP_REQUIRES в iterator_ops.cc:660: Неверный аргумент: по умолчанию MaxPoolingOp поддерживает только NHWC на ЦП устройства типа
[[{{node vgg16 / block1_pool / MaxPool}}]]
Traceback (последний вызов был последним):
Файл "/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/client/session.py", строка 1334, в _do_call
вернуть fn (* args)
Файл "/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/client/session.py", строка 1319, в _run_fn
параметры, feed_dict, fetch_list, target_list, run_metadata)
Файл "/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/client/session.py", строка 1407, в _call_tf_sessionrun
run_metadata)
tenorflow.python.framework.errors_impl.InvalidArgumentError: По умолчанию MaxPoolingOp поддерживает только NHWC на ЦП устройства типа
[[{{node vgg16 / block1_pool / MaxPool}}]]
[[{{node MakeIterator}}]]
Во время обработки вышеуказанного исключения произошло другое исключение:
Traceback (последний вызов был последним):
Файл "/home/tf/image_cls/train.py", строка 103, в
steps_per_epoch = steps_per_epoch,
Файл "/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py", строка 776, в форме
перетасовать = перетасовать)
Файл "/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py", строка 2200, в _standardize_user_data
K.get_session (). Запуск (x.initializer)
Файл "/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/client/session.py", строка 929, в работе
run_metadata_ptr)
Файл "/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/client/session.py", строка 1152, в _run
feed_dict_tensor, options, run_metadata)
Файл "/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/client/session.py", строка 1328, в _do_run
run_metadata)
Файл "/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/client/session.py", строка 1348, в _do_call
поднять тип (e) (node_def, op, message)
tenorflow.python.framework.errors_impl.InvalidArgumentError: По умолчанию MaxPoolingOp поддерживает только NHWC на ЦП устройства типа
[[{{node vgg16 / block1_pool / MaxPool}}]]
[[узел MakeIterator (определенный в /home/tf/image_cls/train.py:103)]]