为什么在 GPU 中分配批量大小?
Why is batch size allocated in GPU?
给定一个输入形状为 (None,256,256,3) 且 batch_size 为 16 的 Keras 模型(在 Colab 上),则为该输入形状分配的内存为 16*256*256 *3*数据类型(数据类型=2、4、8,取决于 float16/32/64)。这就是它的工作原理。我的困惑是,对于给定的 batch_size (=16) 1*256*256*3 可能已经被分配并且 16 张图像可能已经被一张一张传递并且最终梯度可能已经被平均。
1) 那么,分配是否取决于批量大小,以便 'batch_size' 计算可以并行完成以及我上面提到的配置 (1*256*256*3 ) 会序列化并因此破坏 GPU 的目的吗?
2) 是否会在 CPU 上发生相同类型的分配以进行并行计算(如果对 1 的回答是肯定的)?
一般来说,批量大小就是您需要调整的大小。
而你的query batch size是数据依赖的,当你使用batch的时候,你一般是运行一个generator object,它会批量加载数据,执行GD然后继续下一步。
最好使用batch gradient decent因为它收敛速度比GD快
此外,随着批量大小的增加,将加载更多的训练样本,增加内存分配,
是的,你可以使用并行计算来训练大批量,但总的来说你做的是一样的,因为你实际上每次都在计算整个批次,就像你在一般批量计算中所做的那样
CPU 应该有核心,那么是的,否则你需要 GPU,因为计算需要大量的能力 因为你在引擎盖下所做的一切都是使用 n 维矩阵,计算偏导数,然后计算平方损失和进一步更新权重值
给定一个输入形状为 (None,256,256,3) 且 batch_size 为 16 的 Keras 模型(在 Colab 上),则为该输入形状分配的内存为 16*256*256 *3*数据类型(数据类型=2、4、8,取决于 float16/32/64)。这就是它的工作原理。我的困惑是,对于给定的 batch_size (=16) 1*256*256*3 可能已经被分配并且 16 张图像可能已经被一张一张传递并且最终梯度可能已经被平均。
1) 那么,分配是否取决于批量大小,以便 'batch_size' 计算可以并行完成以及我上面提到的配置 (1*256*256*3 ) 会序列化并因此破坏 GPU 的目的吗?
2) 是否会在 CPU 上发生相同类型的分配以进行并行计算(如果对 1 的回答是肯定的)?
一般来说,批量大小就是您需要调整的大小。
而你的query batch size是数据依赖的,当你使用batch的时候,你一般是运行一个generator object,它会批量加载数据,执行GD然后继续下一步。
最好使用batch gradient decent因为它收敛速度比GD快
此外,随着批量大小的增加,将加载更多的训练样本,增加内存分配,
是的,你可以使用并行计算来训练大批量,但总的来说你做的是一样的,因为你实际上每次都在计算整个批次,就像你在一般批量计算中所做的那样
CPU 应该有核心,那么是的,否则你需要 GPU,因为计算需要大量的能力 因为你在引擎盖下所做的一切都是使用 n 维矩阵,计算偏导数,然后计算平方损失和进一步更新权重值