关于在tf.data.Dataset.map()

时间:2019-05-02 16:16:32

标签: python python-3.x tensorflow tensorflow2.0

我的总体目标是使用tf.data API创建时间序列数据集。通过使用window()函数将数据集分组为较小的重叠块,我越来越接近了。问题在于window()返回一个数据集,其中每个元素都是数据集的集合。我的目标是将子数据集堆叠到张量中,以便新数据集的每个元素都只是张量。看来可以先使用window()然后再执行reduce()来完成此操作,但是使用这种方法却没有成功。

我致电tf.data.Dataset.map()时收到警告:UserWarning: Creating resources inside a function passed to Dataset.map() is not supported. Create each resource outside the function, and capture it inside the function to use it.

我在MacOSX上使用tensorflow 2.0.0a0和Python 3.6.2。

起初,我认为问题在于存储“功能”和“标签”变量,因此我在flatten_window()内合并了三行,但这没有用。

def flatten_window(dataset):
    feature = tf.data.experimental.get_single_element(dataset.take(1))
    label = tf.data.experimental.get_single_element(dataset.skip(1).take(1))
    return {"lags": feature}, label

lookahead=2
lookbehind=2
transformed_data_train = np.array(range(100))
dataset = tf.convert_to_tensor(transformed_data_train, dtype=tf.float32)
dataset = tf.data.Dataset.from_tensor_slices(dataset)
dataset = dataset.window(size=lookahead + lookbehind, shift=1, stride=1, drop_remainder=True)
dataset = dataset.map(flatten_window)

我基本上只是想摆脱此警告消息。感谢您的帮助。

编辑:添加了有关用例的其他详细信息。

0 个答案:

没有答案