如何解决Tensorflow .batch 不能正确分离张量
我有一个形状数组 (1,6354944)
array([[ 9.15527344e-05,-6.10351562e-05,6.10351562e-05,...,1.01928711e-02,7.92236328e-02,-2.69470215e-02]])
并将它们转换为张量切片
stream = tf.data.Dataset.from_tensor_slices(reshaped_data)
但是当我批量处理它们时
seqs = stream.batch(1000,drop_remainder=True)
它回来了
<BatchDataset shapes: (1000,6354944),types: tf.float64>
当它应该有一个形状
(1000,6354)
解决方法
你应该设置
drop_remainder=False
按照文档中的说明生产较小的批次:
批次:
批次( batch_size,drop_remainder=False,num_parallel_calls=None,确定性=None )
结果元素的组件将有一个额外的外部维度,它将是batch_size(如果batch_size 没有将输入元素的数量N 平均划分并且drop_remainder 为False,则最后一个元素的N % batch_size)。如果您的程序依赖具有相同外部尺寸的批次,则应将 drop_remainder 参数设置为 True 以防止生成较小的批次。
,您可以在创建数据集之前重塑数据:
r = tf.reshape(a[ :,:6354000 ],(1000,6354))
stream = tf.data.Dataset.from_tensor_slices(r)
seqs = stream.batch(1000) #(1000,6354)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。