将两个tensorflow数据集合并为一个具有输入和标签的数据集



我有两个使用timeseries_dataset_from_array(docs)生成的tensorflow数据集。一个对应网络的输入,另一个对应网络的输出。我想我们可以称之为输入数据集和目标数据集,它们都是相同的形状(固定大小的时间序列窗口)。

我用来生成这些数据集的代码如下:

train_x = timeseries_dataset_from_array(
df_train['x'],
None,
sequence_length,
sequence_stride=sequence_stride,
batch_size=batch_size
)
train_y = timeseries_dataset_from_array(
df_train['y'],
None,
sequence_length,
sequence_stride=sequence_stride,
batch_size=batch_size
)

问题是,当调用model.fit时,tf。keras期望,如果x参数中给出了tf.data.Dataset,则必须同时提供输入目标。这就是为什么我需要将这两个数据集合并为一个,将一个设置为输入,另一个设置为目标

最简单的方法是使用tf.data.Dataset.zip:

import tensorflow as tf
import numpy as np
X = np.arange(100)
Y = X*2
sample_length = 20
input_dataset = tf.keras.preprocessing.timeseries_dataset_from_array(
X, None, sequence_length=sample_length, sequence_stride=sample_length)
target_dataset = tf.keras.preprocessing.timeseries_dataset_from_array(
Y, None, sequence_length=sample_length, sequence_stride=sample_length)
dataset = tf.data.Dataset.zip((input_dataset, target_dataset))
for x, y in dataset:
print(x.shape, y.shape)
(5, 20) (5, 20)

然后您可以直接将dataset提供给您的模型。

相关内容

  • 没有找到相关文章

最新更新