Я использую h5py для создания набора данных. Поскольку я хочу хранить массивы с разным размером #of rows, я использую vlen h5py special_type. Однако я испытываю поведение, которое не могу объяснить, может быть, вы поможете мне понять, что происходит:
>>>> import h5py
>>>> import numpy as np
>>>> fp = h5py.File(datasource_fname, mode='w')
>>>> dt = h5py.special_dtype(vlen=np.dtype('float32'))
>>>> train_targets = fp.create_dataset('target_sequence', shape=(9549, 5,), dtype=dt)
>>>> test
Out[130]:
array([[ 0., 1., 1., 1., 0., 1., 1., 0., 1., 0., 0.],
[ 1., 0., 0., 0., 1., 0., 0., 1., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1.]])
>>>> train_targets[0] = test
>>>> train_targets[0]
Out[138]:
array([ array([ 0., 1., 0., 0., 0., 1., 0., 0., 0., 0., 1.], dtype=float32),
array([ 1., 0., 0., 0., 1., 0., 0., 0., 0., 1., 0.], dtype=float32),
array([ 0., 0., 0., 1., 0., 0., 0., 0., 1., 0., 0.], dtype=float32),
array([ 0., 0., 1., 0., 0., 0., 0., 1., 0., 0., 0.], dtype=float32),
array([ 0., 1., 0., 0., 0., 0., 1., 0., 0., 0., 0.], dtype=float32)], dtype=object)
Я ожидаю, что train_targets[0]
будет такой формы, однако я не могу распознать строки в своем массиве. Они кажутся полностью перемешанными, однако это последовательно. Под этим я подразумеваю, что каждый раз, когда я пробую приведенный выше код, train_targets[0]
выглядит одинаково.
Чтобы уточнить: первый элемент в моем train_targets
, в данном случае test
, имеет форму (5,11)
, однако второй элемент может иметь форму (5,38)
, поэтому я использую vlen.
спасибо за помощь
Мат