В настоящее время я пытаюсь использовать несколько предварительно обученных сетей ImageNet в кератах для извлечения функций из изображений.Для этого я удаляю верхний слой сети, предварительно обрабатываю входные данные в соответствии с каждым из требований сети и затем сохраняю выходные данные в файле hdf5.Я использовал несколько других предварительно обученных сетей, использующих тот же самый подход и код (только переключение сети), и это, кажется, работает отлично.Тем не менее, сеть, которую я изо всех сил пытаюсь заставить работать, - «InceptionResNetV2».Я не верю, что у меня возникают какие-либо проблемы с сетью, только с сохранением - я приложил слегка упрощенную версию кода.Изменение модели в экстракторе функций и модели в предварительной обработке означает, что она отлично работает - для vgg16, vgg19, resnet, inception и т. Д. - все хорошо.
db = h5py.File(hdf5_path, mode="w")
featuresDB = db.create_dataset("features", shape=features_shape, dtype="float")
images = [cv2.imread(path, 1) for path in image_paths[start:end]]
images = inception_resnet_v2.preprocess_input(images)
features = feature_extractor.extract(images)
featuresDB[start:end] = features
Однако это приводит к следующей ошибке.Я пытался изменить d-тип данных, поступающих в featuresDB, на int, но это не имело никакого эффекта.Любые предложения приветствуются!
File "h5py/utils.pyx", line 101, in h5py.utils.convert_tuple
TypeError: an integer is required
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "Extract_Features.py", line 111, in <module>
extract_features(image_paths, hdf5_path=args["features_db"],
feature_extractor=feature_extractor)
File "Extract_Features.py", line 83, in extract_features
featuresDB = db.create_dataset("features", shape=features_shape, dtype="float")
File "/home/will/tensorflow/lib/python3.5/site-packages/h5py/_hl/group.py", line
106, in create_dataset
dsid = dataset.make_new_dset(self, shape, dtype, data, **kwds)
File "/home/will/tensorflow/lib/python3.5/site-packages/h5py/_hl/dataset.py", line 137, in make_new_dset
sid = h5s.create_simple(shape, maxshape)
File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
File "h5py/h5s.pyx", line 95, in h5py.h5s.create_simple
File "h5py/utils.pyx", line 103, in h5py.utils.convert_tuple
TypeError: Can't convert element 1 (None) to hsize_t