tenorflow.python.framework.errors_impl.InvalidArgumentError: по умолчанию MaxPoolingOp поддерживает только NHWC на ​​ЦП устройства типа - PullRequest
1 голос
/ 19 июня 2019

когда я использую предварительно обученную модель 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)]]

...