2017-01-26 1 views
0

Après avoir transféré mon fichier hdf5 à Amazon EC2 exemple linux, il semble que je ne vois pas des jeux de données dans ce fichier (5GB, md5sum vérifié après le transfert)jeux de données H5py pas vu

Quand je lance ce code:

import h5py 
h5_fname = 'DATA\DATA.h5' 
print (h5py.version.info) 
f = h5py.File(h5_fname, 'r') 
print(f) 
for name in f: 
    print(name) 
    print(f[name].shape) 
f.close() 

sur mon ordinateur local que je reçois (ce qui est correct):

h5py 2.6.0 
HDF5 1.8.15 
Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)] 
sys.platform win32 
sys.maxsize  9223372036854775807 
numpy 1.12.0 

<HDF5 file "DATA.h5" (mode r)> 
X_train 
(1397, 1, 128, 128, 128) 
y_train 
(1397, 1) 
i_train 
(1397, 1) 
X_test 
(198, 1, 128, 128, 128) 
y_test 
(198, 1) 
i_test 
(198, 1) 

Effectué sur Amazon par exemple:

h5py 2.6.0 
HDF5 1.8.17 
Python 3.5.1 (default, Sep 13 2016, 18:48:37) 
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] 
sys.platform linux 
sys.maxsize  9223372036854775807 
numpy 1.11.3 

<HDF5 file "DATA\DATA.h5" (mode r)> 

Il existe des différences de version mais je ne pense pas que ce soit le problème ici. Des suggestions?

Edit: Le code comment j'ai créé le fichier hdf5 peut-être utile:

def create_h5(fname_): 
    f = h5py.File(fname_, 'w', libver='latest') 
    dtype_ = h5py.special_dtype(vlen=bytes) 
    num_samples_train = 1397 
    num_samples_test = 1595 - 1397  
    chunks_ = (1, 1, 128, 128, 128) #100MB 
    chunks_2 = (1, 1) 

    f.create_dataset('X_train', (num_samples_train, 1, 128, 128, 128), dtype=np.float32, maxshape=(None, None, None, 128, 128), chunks=chunks_, compression="gzip") 
    f.create_dataset('y_train', (num_samples_train, 1), dtype=np.int32, maxshape=(None, 1), chunks=chunks_2, compression="gzip") 
    f.create_dataset('i_train', (num_samples_train, 1), dtype=dtype_, maxshape=(None, 1), chunks=chunks_2, compression="gzip") 


    f.create_dataset('X_test', (num_samples_test, 1, 128, 128, 128), dtype=np.float32, maxshape=(None, None, None, 128, 128), chunks=chunks_, compression="gzip") 
    f.create_dataset('y_test', (num_samples_test, 1), dtype=np.int32, maxshape=(None, 1), chunks=chunks_2, compression="gzip") 
    f.create_dataset('i_test', (num_samples_test, 1), dtype=dtype_, maxshape=(None, 1), chunks=chunks_2, compression="gzip") 


    f.flush() 
    f.close() 
    print('HDF5 file created') 

Répondre

0

Changement h5_fname = 'DATA\DATA.h5'-h5_fname = 'DATA//DATA.h5' a résolu le problème.

Cependant, c'est très étrange car même avec la première option, j'ai été capable d'ouvrir le fichier.

+0

Vous devriez utiliser 'os.path.join' du paquet' os' –