python - 每次循环迭代后内存增加
问题描述
在 while 循环中运行我的模型时出现内存问题。我有一个训练有素的模型,我已经保存了。
我创建了一个函数,其中输入是模型、经过训练的输入和相应的输出。
我正在做的是在我的函数内部初始化一个任意输入,并将其用作训练模型的输入。相对于输入的梯度用于将我的任意输入更改为实际输入值。
代码工作正常,我得到了我需要的值,但是如果循环遍历数千个值,我的内存就会满。
任何人都可以提出一些建议吗?
我不确定如何使用 K.clear_session() 以及它是否有效。
代码如下:
def reverse_generator(generator, y_sample,x_sample):
i=0
result_inputs=np.zeros((len(y_sample),11),dtype=np.float16)
while i < len(y_sample):
if np.count_nonzero(y_sample[i])==2:
y_sample[i][y_sample[i] != 0] = 1.0
latent_vec = y_sample[i]
latent_vec=latent_vec[np.newaxis,...]
elif np.count_nonzero(y_sample[i])==1:
#print('we are in 1')
y_sample[i][y_sample[i] != 0] = 1.0
latent_vec = y_sample[i]
latent_vec=latent_vec[np.newaxis,...]
elif np.count_nonzero(y_sample[i])==3:
y_sample[i][y_sample[i] != 0] = 0.33
latent_vec = y_sample[i]
latent_vec=latent_vec[np.newaxis,...]
elif np.count_nonzero(y_sample[i])==4:
y_sample[i][y_sample[i] != 0] = 0.25
latent_vec = y_sample[i]
latent_vec=latent_vec[np.newaxis,...]
"""Gradient descent to map images back to their latent vectors."""
target = K.placeholder((91))
loss = K.sum(K.abs(generator.outputs[0] - target))
grad = K.gradients(loss, generator.inputs[0])[0]
sess = K.get_session()
update_rate = 0.001
for k in range(1):
for _ in range(10):
update_vec, cost = sess.run([grad, loss], feed_dict={target: x_sample[i],generator.inputs[0]: latent_vec})
latent_vec -= update_vec * update_rate
result_inputs[i,:]=latent_vec[0,:]
print('#############final latent vector of input number############# ' +str(i) , np.abs(np.around(y_sample[i],2)))
i=i+1
return result_inputs
解决方案
在此处指定解决方案(回答部分),即使它出现在评论部分中也是为了社区的利益。
增加内存的问题通过迭代完成后的每次Ending the Session
加载来解决。trained model
推荐阅读
- python - 如何在 Azure Databricks 群集上安装 gurobi 库?
- svelte - 设置存储值的 Svelte 用户注册问题
- amazon-web-services - 从多个参数化模板生成用于 AWS SAM 部署的 template.yml(当前尝试使用 ytt)
- c++ - 返回值的内存地址(汇编语言 C++)
- amazon-web-services - 我可以使用 terraform 在 aws 中注册域吗?
- c# - I need Newtonsoft JSON deserialization to skip an entry in a given dictionary JSON
- java - How do I Implement swap array method in main class?
- eclipse - 如何为非 java 文件启用面包屑导航?
- regex - Advanced Regex Query?
- python - Split spreadsheet into pieces based on the sequences of numbers