Я хочу создать генератор данных в Python на основе функции "fit_generator" на странице https://keras.io/models/sequential/. Код для функции:
def generate_arrays_from_file():
while True:
with open('data.npz') as f:
for line in f:
# TODO
yield ({'input': x}, {'output': y})
В строке TODO
мне нужно назначить некоторые данные из f
в x
и y
.
Теперь файл "data.npz" на самом деле является зашифрованным файлом NumPy. Это было создано:
x = random_numpy_array() # Create a NumPy array (details not important)
y = random_numpy_array()
np.savez('data.npz', x=x, y=y)
Обычно вы читаете x
и y
, используя:
data = np.load('data.npz')
x = data['x']
y = data['y']
Однако в моем примере (первый блок кода выше) я не загружал данные, используя np.load()
. Вместо этого я загрузил его, используя with open('data.npz') as f
.
Чтобы прочитать x
и y
из f
, я попытался:
x = f['x']
y = f['y']
Но это дает мне ошибку:
TypeError: '_io.TextIOWrapper' object is not subscriptable
Итак, как я могу прочитать f
и извлечь x
и y
?
Я уверен, что вам нужно использовать функцию загрузки для numpy файлов. Он загрузит его в массив, с помощью которого вы сможете хранить массивы в словаре, если это то, что вы хотите.