2017-10-13 4 views
0

Zum Beispiel möchte ich zwei Datensätze machen, ein Input ist, ist die andere OutputWie erstellt man einen Multidim-Datensatz in HDF5?

Die Daten in Input und Output sind Multi-dimmt.

wie

enter image description here

Aber ich merke in h5py, input_node und output_node ist festgelegt.

Input = f.create_dataset('Input', (3,input_node),dtype='float', chunks=True) 
Output = f.create_dataset('Output', (3,output_node),dtype='float', chunks=True) 

Aber hdf5 dies nicht umgehen kann, kann dieser Code beweisen es

import h5py 

X = [[1,2,3,4],[1,2],[1,2,3,4,5,6]] 

with h5py.File('myfile.hdf5', "w") as ofile: 
    ofile.create_dataset("X", data=X) 

TypeError: Object dtype dtype('O') has no native HDF5 equivalent

So wie ein Multi-dimmt-Datensatz in h5py zu machen?

Antwort

0

Ich folge nicht ganz, was Ihre {...} bezeichnen. In Python werden diese für Wörterbücher und Sets verwendet. [] werden für Listen verwendet, () für Tupel. Array-Form wird als Tupel ausgedrückt.

Anyways, Ihr Code erzeugt

In [68]: X 
Out[68]: 
array([ list([0.6503719194043309, 0.8703218883225239, -1.4139639093161405, 2.3288987644271835, -1.7957516518177206]), 
     list([-0.1781710442823114, 0.9591992379396287, -0.6319292685053243]), 
     list([0.7104492662861611, -0.8951817329357393, -0.8925882332063567, 1.5587934871464815]), 
     list([-1.2384976614455354, 0.9044140291496179, 1.1277220227448401]), 
     list([1.1386910680393805, -0.1775792543137636, 1.0567836199711476]), 
     list([2.7535019220459707, 0.29518918092088386, -0.32166742909305196, 1.5269788560083497, 0.29633276686886767]), 
     list([1.6397535315116918, -0.8839570613086122, -0.4491121599234047, -2.4461439611764333, -0.6884616200199412, -1.1920165045444608]), 
     list([1.3240629024597295, 1.170019287452736, 0.5999977019629572, -0.38338543090263366, 0.6030856099472732]), 
     list([-0.013529997305716175, -0.7093551284624415, -1.8611980839518099, 0.9165791506693297]), 
     list([2.384081118320432, -0.6158201308053464, 0.8802896893269192, -0.7636283160361232])], dtype=object) 
In [69]: y 
Out[69]: array([1, 1, 0, 0, 0, 1, 1, 0, 1, 0]) 

y ein einfaches Array ist. h5py sollte kein Problem haben, das zu speichern.

X ist ein Objekt dtype Array, Listen von variierender Größe

In [72]: [len(l) for l in X] 
Out[72]: [5, 3, 4, 3, 3, 5, 6, 5, 4, 4] 

h5py kann nicht diese Art von Array speichern enthält. Im besten Fall können Sie jedes Element in einen anderen dataset schreiben. Es wird jedes als ein Array gespeichert.

+0

Wenn Daten in verschiedenen Datasets in 'hdf5' gespeichert werden, führt dies zu Problemen, wenn diese Datei als Eingabe eines neuronalen Netzwerks verwendet wird – partida

Verwandte Themen