Ошибка импорта данных в Python

1

Я пытаюсь импортировать набор данных MNIST в Python следующим образом:

import h5py
f = h5py.File("mnist.h5")
x_test = f["x_test"]
x_train = f["x_train"]
y_test = f["y_test"]
y_train = f["y_train"]

тип say, y_train говорит h5py._hl.dataset.Dataset

Я хочу преобразовать их в float для математического удобства. Я пробую это:

D = x_train.astype(float)
y_train = y_train.astype(float)+np.ones((60000,1));

но я получаю эту трассировку:

Traceback (most recent call last):

  File "<ipython-input-14-f3677d523d45>", line 1, in <module>
    y_train = y_train.astype(float)+np.ones((60000,1));

TypeError: unsupported operand type(s) for +: 'AstypeContext' and 'float'

Где я пропадаю? Благодарю.

Теги:
import
dataset

1 ответ

1
Лучший ответ

Вы используете две разные библиотеки, которые имеют два совершенно разных значения для astype.

Если вы делаете это в numpy, что-то вроде этого работает:

a = np.array([1, 2, 3])

a = a.astype(float) + np.ones((60000,1))

Но в h5py астепи есть другая функция и предназначена для использования в менеджере контекста:

Это вызовет ту же ошибку, что и вы:

import h5py
f = h5py.File('mytestfile.hdf5', 'w')
dset = f.create_dataset("default", (100,))
dset.astype(float)  + np.ones((60000,1))

Но приведенный ниже код будет работать (см. Astype в h5py docs):

f = h5py.File('mytestfile.hdf5', 'w')
dset = f.create_dataset("default", (100,))

with dset.astype('float'):
    out = dset[:]
    out += np.ones((100,))

Эта проблема аналогична созданию ссылки на набор данных HDF в H5py с использованием астипа

  • 1
    Это действительно помогло. Большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню