【发布时间】:2019-02-26 06:21:06
【问题描述】:
我正在尝试使用 Keras 实现 LSTM 网络,但在获取输入时遇到了问题。 我的数据集采用多个 CSV 文件的形式(所有文件的尺寸相同,均为 68x250,每个条目包含 2 个值)。各个类之间大约有 200 个 CSV 文件。 Preview of one of the CSVs
如何将这些多个 CSV 作为输入?
【问题讨论】:
我正在尝试使用 Keras 实现 LSTM 网络,但在获取输入时遇到了问题。 我的数据集采用多个 CSV 文件的形式(所有文件的尺寸相同,均为 68x250,每个条目包含 2 个值)。各个类之间大约有 200 个 CSV 文件。 Preview of one of the CSVs
如何将这些多个 CSV 作为输入?
【问题讨论】:
我最近做了类似的事情,因为 Pedro 说你应该使用 fit_generator 并编写你的自定义生成器。
这是一个生成器的示例:
def generator(files):
print('start generator')
while 1:
print('loop generator')
for file in files:
try:
df = pd.read_csv(file)
batches = int(np.ceil(len(df)/batch_size))
for i in range(0, batches):
yield pad_batch(df[i*batch_size:min(len(df), i*batch_size+batch_size)])
except EOFError:
print("error" + file)
您将文件名列表传递给生成器,它会遍历文件并批量返回内容。 load_data 在我的例子中是一个读取 pandas 中的 csvs 并进行一些预处理的函数。 pad_batch 为 LSTM 做填充。
用法:
model.fit_generator(
generator=generator(trainingFiles),
steps_per_epoch=steps,
epochs=num_epochs,
validation_data=[x_test, y_test],
verbose=1)
【讨论】:
定义一个实现接口的类: https://keras.io/utils/#sequence
并使用方法 model.fit_generator。
【讨论】: