Python 用记忆控件训练多列CNN

Python 用记忆控件训练多列CNN,python,python-3.x,tensorflow,keras,tf.keras,Python,Python 3.x,Tensorflow,Keras,Tf.keras,我使用tf.keras部署了一个Inception v3模型,它运行良好。目前,我正试图改进我的模型,使其能够同时处理多个补丁/图像,这是Lu等人提出的:有几个“列”(也称为Inception模型的第一层),它们共享权重。然而,我有内存限制(我使用的是4GB内存的GTX980),我不能以一种简单的方式实现它,因为它在试图计算梯度时会出错。它不适用于非常小的批大小(2!)和3列,因此每个批“实际上”由6个图像组成。这并不能解决问题:我想用更多的列来测试这个架构 有没有更聪明的方法让Keras(或直

我使用tf.keras部署了一个Inception v3模型,它运行良好。目前,我正试图改进我的模型,使其能够同时处理多个补丁/图像,这是Lu等人提出的:有几个“列”(也称为Inception模型的第一层),它们共享权重。然而,我有内存限制(我使用的是4GB内存的GTX980),我不能以一种简单的方式实现它,因为它在试图计算梯度时会出错。它不适用于非常小的批大小(2!)和3列,因此每个批“实际上”由6个图像组成。这并不能解决问题:我想用更多的列来测试这个架构


有没有更聪明的方法让Keras(或直接Tensorflow)计算“柱状”梯度?让我介绍一些符号来解释我所说的列式:将d(x_2,w_2)称为最后一个密集层,将c(x_1,w_1)称为列,其中x_I是层的输入,w_I是权重。然后可以计算(在内存中)d(c(x_1,w_1),w_2)的梯度。假设有一个函数u将几个k维张量“联合”成一个k维张量(如max、average等)。然后我想计算(在内存中)d的梯度(u(c(x_11,w_1),…,c(x_1n,w_1)),w_2)。在列方面,我指的是一个技巧,它计算联合函数u的每个输入c(x_1i,w_1)的梯度wrt

你试过使用更小的批量吗?我没有投反对票,但是你能解释一下“按列”梯度到底是什么意思吗?你到底在哪里耗尽了内存(不是每个人都想读整篇文章,你知道的)@dcolazin@Auyer是的,用更多信息编辑了问题,谢谢@FalconUA解释了更多,谢谢!如果您想尝试在更高的硬件规格下运行它,请使用GoogleColab for 12GB RAM。