batch是在解析之后完成的,为什么会更改解析的结果呢?

来源:4-5 tf.data读取csv文件并与tf.keras结合使用

weixin_慕勒7004644

2021-01-04

老师,我可以理解当batch_size=1时,dataset每一个元素是(x(shape=(8,),y(shape=(1,))形式,但是当batch_size=2时,为什么dataset每一个元素是(x(shape=(2,8),y(shape=(2,1))而不是(x(shape=(8,),y(shape=(1,),x(shape=(8,),y(shape=(1,))这样的呢,batch是在解析之后完成的呀,解析的结果不就是一行数据变成x,y两个结果,为什么batch之后两行数据也是x,y两个结果呢,而不是x,y,x,y这样的类型呢?

def csv_reader_dataset(filenames, n_readers=5,
                       batch_size=32, n_parse_threads=5,
                       shuffle_buffer_size=10000):
    dataset = tf.data.Dataset.list_files(filenames)
    dataset = dataset.repeat()
    dataset = dataset.interleave(
        lambda filename: tf.data.TextLineDataset(filename).skip(1),
        cycle_length = n_readers
    )
    dataset.shuffle(shuffle_buffer_size)
    dataset = dataset.map(parse_csv_line,
                          num_parallel_calls=n_parse_threads)
    dataset = dataset.batch(batch_size)
    return dataset
写回答

1回答

正十七

2021-01-07

因为神经网络都是矩阵运算,所以如果做batch,dataset会把x变成矩阵,y变成矩阵,而不是x,y, x, y的类型。变成矩阵后可以一次把x输入给神经网络。这才是做batch的意义。

0
1
weixin_慕勒7004644
想了很久,问了老师恍然大悟,感谢!
2021-01-07
共1条回复

Google老师亲授 TensorFlow2.0 入门到进阶

Tensorflow2.0实战—以实战促理论的方式学习深度学习

1849 学习 · 896 问题

查看课程