Tensorflow - 避免张量大小限制

时间:2018-04-11 18:52:42

标签: python tensorflow

我正在研究Long, Shelhamer paper中描述的FCN-32网络的实现,但在进行上采样时遇到了障碍。为了上采样到原始大小,其他implementations使用带有双线性过滤器的conv2d_transpose层,内核大小为64x64。这很好,直到你开始使用很多类。

对于任意数量的课程> ~375,转置层中的filters变量是> 2 gb(64 x 64 x(> 375)x(> 375))所以Tensorflow抱怨并且死了,说

ValueError: Cannot create a tensor proto whose content is larger than 2GB.

有没有办法避免这个大小限制?我的第一个想法是生成张量,但如果这样的构造存在或可能,我找不到任何关于如何创建的文档。

1 个答案:

答案 0 :(得分:2)

您可以将输出类拆分为多个操作,并在最后将它们连接起来。

Backprop将通过concat操作正常工作。它应该像创建两个conv2d_transpose操作一样简单,每个操作都有一半的类并适当地连接结果并从那里继续执行损失函数。

根据需要创建超过2个conv2d_transpose操作也可以正常工作。

考虑到这一点后,我相信它会起作用。如果有问题请告诉我,我会更新答案。