2016-01-15 2 views
1

Я пишу слой python для caffe, который может читать hdf5 с некоторыми потребностями манипуляции для меня. Но у меня есть проблема при открытии и чтении файла hdf5 в методе настройки python. Вот. Когда я использовал таблицы с кода в установке:Уровень Python не может читать файл hdf5 в caffe framework

def setup(self, bottom, top): 
    h5file = tables.open_file("/home/titan/models/hdf5/train_small.h5", driver="H5FD_CORE") 

У меня есть эта ошибка при запуске сети:

Traceback (most recent call last): 
    File "/home/titan/scripts/python_layers/pydata_hdf5.py", line 37, in setup 
    h5file = tables.open_file("/home/titan/models/hdf5/train_small.h5", driver="H5FD_CORE") 
    File "/home/titan/anaconda/lib/python2.7/site-packages/tables/file.py", line 318, in open_file 
    return File(filename, mode, title, root_uep, filters, **kwargs) 
    File "/home/titan/anaconda/lib/python2.7/site-packages/tables/file.py", line 784, in __init__ 
    self._g_new(filename, mode, **params) 
    File "tables/hdf5extension.pyx", line 465, in tables.hdf5extension.File._g_new (tables/hdf5extension.c:4872) 
tables.exceptions.HDF5ExtError: HDF5 error back trace 

    File "../../../src/H5FDcore.c", line 273, in H5Pset_fapl_core 
    not a file access property list 
    File "../../../src/H5Pint.c", line 3371, in H5P_object_verify 
    property list is not a member of the class 
    File "../../../src/H5Pint.c", line 3321, in H5P_isa_class 
    not a property list 

End of HDF5 error back trace 

Когда я h5py

def setup(self, bottom, top): 
    self.data = h5py.File('/home/titan/models/hdf5_nose_mouth/train_small.h5', 'r') 

У меня такая же ошибка :

Traceback (most recent call last): 
    File "/home/titan/scripts/python_layers/pydata_hdf5.py", line 11, in <module> 
    import h5py 
    File "/home/titan/anaconda/lib/python2.7/site-packages/h5py/__init__.py", line 31, in <module> 
    from .highlevel import * 
    File "/home/titan/anaconda/lib/python2.7/site-packages/h5py/highlevel.py", line 13, in <module> 
    from ._hl.base import is_hdf5, HLObject 
    File "/home/titan/anaconda/lib/python2.7/site-packages/h5py/_hl/base.py", line 78, in <module> 
    dlapl = default_lapl() 
    File "/home/titan/anaconda/lib/python2.7/site-packages/h5py/_hl/base.py", line 65, in default_lapl 
    lapl = h5p.create(h5p.LINK_ACCESS) 
    File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper (-------src-dir-------/h5py/_objects.c:2458) 
    File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper (-------src-dir-------/h5py/_objects.c:2415) 
    File "h5py/h5p.pyx", line 130, in h5py.h5p.create (-------src-dir-------/h5py/h5p.c:2491) 
ValueError: Not a property list class (Not a property list class) 

Когда я использовал deepdish:

def setup(self, bottom, top): 
    self.data = dd.io.load('/home/titan/models/hdf5/train_smallest.h5') 

У меня есть ошибка тоже:

Traceback (most recent call last): 
    File "/home/titan/scripts/python_layers/pydata_hdf5.py", line 36, in setup 
    self.data = dd.io.load('/home/titan/models/hdf5/train_smallest.h5') 
    File "/home/titan/anaconda/lib/python2.7/site-packages/deepdish/io/hdf5io.py", line 476, in load 
    with tables.open_file(path, mode='r') as h5file: 
    File "/home/titan/anaconda/lib/python2.7/site-packages/tables/file.py", line 318, in open_file 
    return File(filename, mode, title, root_uep, filters, **kwargs) 
    File "/home/titan/anaconda/lib/python2.7/site-packages/tables/file.py", line 784, in __init__ 
    self._g_new(filename, mode, **params) 
    File "tables/hdf5extension.pyx", line 488, in tables.hdf5extension.File._g_new (tables/hdf5extension.c:5081) 
tables.exceptions.HDF5ExtError: HDF5 error back trace 

    File "../../../src/H5F.c", line 1582, in H5Fopen 
    not file access property list 
    File "../../../src/H5Pint.c", line 3321, in H5P_isa_class 
    not a property list 

End of HDF5 error back trace 

Но когда я прочитал просто * .txt файл, все в порядке. Также я могу прочитать этот файл с консоли и использовать его в слое hdf5 в caffe. Пожалуйста, помогите мне, как я могу читать файл hdf5 из слоя python?

+0

Это странно. Что выводит 'h5ls' в этот файл? – Shai

+0

Когда я делаю это: titan @ titan: ~/models/hdf5 $ h5ls train_small.h5 данные Набор данных {100, 3, 64, 64} ярлык Dataset {100, 4} – Atikin

+0

очень странный. Я предлагаю обходное решение: если вы можете прочитать файл на слое «HDF5Data», почему бы вам не прочитать его на уровне HDF5data caffe и добавить только слой python для манипуляций? – Shai

ответ

3

Попробуйте установить другую версию h5py. Я просто решил его:

pip install h5py==prev_version

Я предполагаю, что это что-то делать с связыванием, но было бы интересно узнать, что точная причина этой проблемы.

Смежные вопросы