【发布时间】:2018-06-09 00:45:26
【问题描述】:
我是 TensorFlow 和机器学习的新手。最近我在做一个模型。我的模型如下,
字符级嵌入向量 -> 嵌入查找 -> LSTM1
字级嵌入向量->嵌入查找-> LSTM2
[LSTM1+LSTM2]->单层MLP->softmax层
[LSTM1+LSTM2]->单层MLP->WGAN判别器
循环模型代码
当我在这个模型上工作时,我收到了以下错误。我以为我的批次太大了。因此,我尝试将批量大小从 20 减少到 10,但它不起作用。
ResourceExhaustedError(回溯见上文):分配时出现 OOM 形状为 [24760,100] [[节点: 字符/双向_rnn/bw/bw/while/bw/lstm_cell/split = 拆分[T=DT_FLOAT, num_split=4, _device="/job:localhost/replica:0/task:0/device:GPU:0"](gradients_2/Add_3/y, chars/bidirectional_rnn/bw/bw/while/bw/lstm_cell/BiasAdd)]] [[节点: bi-lstm/bidirectional_rnn/bw/bw/stack/_167 = _Recvclient_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name="edge_636_bi-lstm/bidirectional_rnn/bw/bw/stack", tensor_type=DT_INT32, _device="/job:localhost/replica:0/task:0/device:CPU:0"]]
张量 shape[24760,100] 表示 2476000*32/8*1024*1024 = 9.44519043 MB 内存。我在 Titan X(11 GB) GPU 上运行代码。会出什么问题?为什么会出现这种错误?
* 额外信息 *:LSTM1 的大小为 100。对于双向 LSTM,它变为 200。 LSTM2 的大小为 300。对于双向 LSTM,它变为 600。
*注意*:错误发生在 32 epoch 之后。我的问题是为什么在 32 epoch 之后会出现错误。为什么不在初始时期。
【问题讨论】:
-
我没有遇到任何“W tensorflow/core/common_runtime/bfc_allocator.cc:271] 试图分配 957.03MiB 的内存不足。请参阅日志了解内存状态。”这种类型的错误,但解决方案似乎相似,另请参阅下面的注意。
标签: python tensorflow batch-processing