我想基于Python https://keras.io/models/sequential/的“ fit_generator”函数创建一个数据生成器。该函数的代码为:
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
?
答案 0 :(得分:1)
我很确定您需要对numpy文件使用加载功能。它将加载到一个数组中,如果需要的话,您可以将其存储在字典中。