如何处理Keras中重复调用K.ctc_decode导致内存泄漏的问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1110个文字,预计阅读时间需要5分钟。
在多次调用K.ctc_decode时,程序占用的内存会越来越高,执行速度会越来越慢。
pythondata=generator(...)model=init_model(...)for i in range(NUM): x, y=next(data) _y=model.predict(x)
如下一段代码,在多次调用了K.ctc_decode时,会发现程序占用的内存会越来越高,执行速度越来越慢。
data = generator(...) model = init_model(...) for i in range(NUM): x, y = next(data) _y = model.predict(x) shape = _y.shape input_length = np.ones(shape[0]) * shape[1] ctc_decode = K.ctc_decode(_y, input_length)[0][0] out = K.get_value(ctc_decode)
原因
每次执行ctc_decode时都会向计算图中添加一个节点,这样会导致计算图逐渐变大,从而影响计算速度和内存。
PS:有资料说是由于get_value导致的,其中也给出了解决方案。
本文共计1110个文字,预计阅读时间需要5分钟。
在多次调用K.ctc_decode时,程序占用的内存会越来越高,执行速度会越来越慢。
pythondata=generator(...)model=init_model(...)for i in range(NUM): x, y=next(data) _y=model.predict(x)
如下一段代码,在多次调用了K.ctc_decode时,会发现程序占用的内存会越来越高,执行速度越来越慢。
data = generator(...) model = init_model(...) for i in range(NUM): x, y = next(data) _y = model.predict(x) shape = _y.shape input_length = np.ones(shape[0]) * shape[1] ctc_decode = K.ctc_decode(_y, input_length)[0][0] out = K.get_value(ctc_decode)
原因
每次执行ctc_decode时都会向计算图中添加一个节点,这样会导致计算图逐渐变大,从而影响计算速度和内存。
PS:有资料说是由于get_value导致的,其中也给出了解决方案。

