如何确定seq2seq tensorflow RNN训练模型的最大批量大小

sta*_*kit 4 machine-learning gpu-programming tensorflow recurrent-neural-network

目前,我使用默认的64作为seq2seq tensorflow模型的批量大小.什么是最大批量大小,层大小等我可以使用具有12 GB RAM和Haswell-E xeon 128GB RAM的单个Titan X GPU.输入数据将转换为嵌入.以下是我正在使用的一些有用参数,似乎单元格输入大小为1024:

encoder_inputs: a list of 2D Tensors [batch_size x cell.input_size].
 decoder_inputs: a list of 2D Tensors [batch_size x cell.input_size].
 tf.app.flags.DEFINE_integer("size", 1024, "Size of each model layer.")
Run Code Online (Sandbox Code Playgroud)

那么基于我的硬件,我可以去的最大批量大小,层数,输入大小是多少?目前GPU显示99%的内存被占用.

小智 5

默认情况下,Tensorflow占用所有可用的GPU内存.但是,有一种方法可以改变这种状况.在我的模型中,我这样做:

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
Run Code Online (Sandbox Code Playgroud)

然后,您可以在启动会话时使用此配置:

with tf.Session(config=config) as sess:
Run Code Online (Sandbox Code Playgroud)

现在,模型将只使用所需的内存,然后您可以尝试使用不同的批量大小,并查看内存何时耗尽.


kev*_*man 0

运行 TensorFlow 模型时的内存使用量取决于模型中的变量数量,以及 TensorFlow 运行时用于计算激活、梯度等的中间张量。例如,在您的模型中,如果input_size1024,每层变量使用的内存是4MB + 4KB(权重和偏差)。用于中间张量的内存将随着批量大小线性增长,但确切的数量很难估计,因为它取决于运行时决定如何安排操作。12GB不过应该能够适合相当大的模型。