我编写了一个程序来读取excel文件的文件夹并将每个文件加载到程序中。然后它获取数据并创建一个大小为零的数组(3001,2001),它将被迭代通过,并且来自excel的相应坐标值将更改为1。然后将阵列重新整形为(1,6005001)的大小。我使用tensorflow重塑数组,因为程序认为它是一个元组,但最终的值存储在一个numpy数组中。我最终将最终格式化的数组存储到名为" filename_Array.csv"的csv文件中。然后程序转到下一个要格式化的excel文件。我在安装了tensorflow的Eclipse上运行Python
我遇到的问题是某些值被缓存在内存中,但我无法弄清楚它是什么。我已经尝试显式删除将重新初始化的大变量,并使用gc.collect()来清理存储的非活动内存。我仍然看到内存使用量稳步增加,直到大约25个文件格式化,然后计算机开始冻结,因为我的电脑上的所有RAM(12GB)正在使用。我知道python会自动为程序完全无法访问的值清除内存,因此我不确定这是否是RAM或其他内容碎片的问题。 对不起文字的墙,我只是想尽可能多地提供问题的信息。
在我因为计算机冻结而不得不终止程序之前,通过大约24个文件运行程序时,我的performance tab屏幕截图的链接。
这是我的代码:
from __future__ import print_function
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import tensorflow as tf
import numpy as np
import csv
import gc
path = r'C:\Users\jeremy.desforges\Desktop\Eclipse\NN_MNIST\VAM SLIJ-II 4.500'
def create_array(g,h,trainingdata,filename):
# Multiplying by factors of 10 to keep precision of data
g = g*1000
h = h*1
max_g = 3000
max_h = 2000
# Initializes an array with zeros to represent a blank graph
image = np.zeros((max_g+1,max_h+1),dtype=np.int)
shape = ((max_g+1)*(max_h+1))
# Fills the blank graph with the input data points
for i in range(len(h)):
image[g[i].astype('int'),h[i].astype('int')] = 1
trainingdata.close()
image = tf.reshape(image,[-1,shape])
# Converts tensor objects to numpy arrays to feed into network
sess = tf.InteractiveSession()
image = sess.run(image)
np.savetxt((filename + "_Array.csv"), np.flip(image,1).astype(int), fmt = '%i' ,delimiter=",")
print(filename, "appended")
print("size",image.shape)
print(image,"= output array")
del image,shape,g,h,filename,sess
return
# Initializing variables
image = []
shape = 1
g = 1.0
h = 1.0
f = 1
specials = '.csv'
folder = os.listdir(path)
for filename in folder:
trainingdata = open(filename, "r+")
filename = str(filename.replace(specials, ''))
data_read = csv.reader(trainingdata)
for row in data_read:
in1 = float(row[0])
in2 = float(row[1])
if (f==0):
z_ = np.array([in1])
g = np.hstack((g,z_))
q = np.array([in2])
h = np.hstack((h,q))
if (f == 1):
g = np.array([in1])
h = np.array([in2])
f = 0
create_array(g,h,trainingdata,filename)
gc.collect()
image = []
shape = 1
g = 1.0
h = 1.0
f = 1