Python 在张量变换期间如何管理内存?
即使这个问题涉及TensorFlow,我也会用普通的数学术语来描述我的问题 这么说吧Python 在张量变换期间如何管理内存?,python,tensorflow,Python,Tensorflow,即使这个问题涉及TensorFlow,我也会用普通的数学术语来描述我的问题 这么说吧 我有一个矩阵W的维数nxk 大小为1 x k的输入向量x 我需要将x与W 在阅读了一些代码示例之后,我现在的做法如下(n=self.nNodes,k=self.inputShape): 似乎(但我不确定)过了一段时间后,TensorFlow在管理内存(尤其是在GPU上)方面遇到了一些困难,因为expand_dims和tile操作返回了新的张量 有没有办法为X_MM分配一个张量(就像我为W分配张量一样)并将输
- 我有一个矩阵
的维数W
nxk
- 大小为1 x k的输入向量
x
- 我需要将
与x
W
n=self.nNodes
,k=self.inputShape
):
似乎(但我不确定)过了一段时间后,TensorFlow在管理内存(尤其是在GPU上)方面遇到了一些困难,因为expand_dims
和tile
操作返回了新的张量
有没有办法为X_MM
分配一个张量(就像我为W
分配张量一样)并将输入值X
复制到X_MM
的每个元素中。这样,X_MM
的内存将只分配一次
是否有一个“原子”指令可以将一个向量逐行复制到另一个向量中(一种无需分配新内存的平铺)?我应该使用TensorFlow迭代器来获得这个吗
更一般地说,我应该担心TensorFlow的内存管理吗?在我看来,这是一个重要的主题,但在文档中找不到任何相关信息,我看到的所有示例都使用分配新内存的运算符。Tensorflow自动为您管理内存。您应该以自然的方式编写计算,让Tensorflow为您管理缓冲区 例如,Tensorflow自动为输出重用某些操作的输入缓冲区,而无需执行任何操作。我不知道代码中的特定运算符是否会发生这种情况 如果您遇到特定Tensorflow程序内存不足的问题,请提供详细的、可运行的、自包含的复制。如果没有更多的信息,就不可能说出到底出了什么问题 希望有帮助
inputShape = (10,)
W = tf.Variable(tf.random_uniform( (nNodes, ) + inputShape, 0.0, 1.0, dtype=tf.float32), dtype=tf.float32, name='W' )
x = tf.placeholder(self.__datatype, inputShape, name='input')
x_M = tf.expand_dims(x, 0, name='x_m')
x_MM = tf.tile(x_M, (nNodes, 1), name='x_mm')
spatDiffs = tf.subtract(x_MM, self.W)