【问题标题】:How to use tensorflow.data.Dataset.flat_map(my_func) with a function of multiple paramters?tensorflow.data.Dataset.flat_map(myfunc) 多参数函数如何使用?
【发布时间】:2020-10-17 13:15:43
【问题描述】:

我将此代码作为窗口函数的一部分:

    dataset = tf.data.Dataset.from_tensor_slices(series)
    dataset = dataset.window(size=window_size, shift=1, drop_remainder=True)
    dataset = dataset.flat_map(lambda window: window.batch(window_size))

但是,在 TF 认证考试中我不能使用 lambda!所以,我需要摆脱 lambda 部分。我尝试使用这样的函数:

def window_to_tensor(window_ds: tf.data.Dataset, window_size: int):
    return window_ds.batch(window_size)

dataset = dataset.flat_map(window_to_tensor ,window_size)

但我得到一个错误:

TypeError: flat_map() 接受 2 个位置参数,但给出了 3 个

即使我尝试使用以下两个函数,我也会收到类似的错误:

dataset = dataset.apply(window_to_tensor,window_size)
dataset = tf.keras.backend.flatten(dataset)

如何在不使用 flat_map(或使用它但不使用 lambda)的情况下映射函数然后展平结果数据集? (我需要使用TF2.0.0)

【问题讨论】:

    标签: python tensorflow keras tensorflow2.0


    【解决方案1】:

    可以使用 lambda。只有 lambda layers 被禁止:

    您可以自己阅读instructions

    所以你可以像这样做窗口数据集:

    import tensorflow as tf
    import numpy as np
    
    window_size = 5
    
    dataset = tf.data.Dataset.from_tensor_slices(np.random.rand(100))
    dataset = dataset.window(window_size, shift=1, drop_remainder=True)
    dataset = dataset.flat_map(lambda window: window.batch(5))
    dataset = dataset.map(lambda window: (window[:-1], window[-1:])).batch(4)
    
    next(iter(dataset))
    
    (<tf.Tensor: shape=(4, 4), dtype=float64, numpy=
     array([[0.82421497, 0.02775336, 0.51822687, 0.99682813],
            [0.02775336, 0.51822687, 0.99682813, 0.25681553],
            [0.51822687, 0.99682813, 0.25681553, 0.80613281],
            [0.99682813, 0.25681553, 0.80613281, 0.01170842]])>,
     <tf.Tensor: shape=(4, 1), dtype=float64, numpy=
     array([[0.25681553],
            [0.80613281],
            [0.01170842],
            [0.01685387]])>)
    

    【讨论】:

    • 我想我需要睡一会才能重新集中注意力!谢谢指正
    猜你喜欢
    • 2022-06-10
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多