请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

老师,我可以理解当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回答

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

0 回复 有任何疑惑可以回复我~
  • 提问者 weixin_慕勒7004644 #1
    想了很久,问了老师恍然大悟,感谢!
    回复 有任何疑惑可以回复我~ 2021-01-07 21:20:22
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信