【发布时间】:2020-04-01 05:46:31
【问题描述】:
我正在尝试创建一个区分猫和狗的 KNN 图像分类器。但是,每次我尝试进行预测时,都会出现内存错误和权限错误:
import numpy as np
import matplotlib.pyplot as plt
import os
import cv2
import tensorflow as tf
Datadir ="C:/Users/NIMROID/Music/PetImages"
typess =["Dog", "Cat"]
for types in typess:
path =os.path.join(Datadir, types)
for img in os.listdir(path):
img_array =cv2.imread(os.path.join(path,img), cv2.IMREAD_GRAYSCALE)
IMG_SIZE= 50
training_data = []
def create_training_data():
for types in typess:
path =os.path.join(Datadir, types)
class_num = typess.index(types)
for img in os.listdir(path):
try:
img_array =cv2.imread(os.path.join(path,img), cv2.IMREAD_GRAYSCALE)
new_array =cv2.resize(img_array, (IMG_SIZE ,IMG_SIZE))
training_data.append([new_array,class_num])
except Exception as e:
pass
create_training_data()
import random
random.shuffle(training_data)
X= []
y= []
for features, label in training_data:
X.append(features)
y.append(features)
X= np.array(X)
y=np.array(y)
from sklearn.model_selection import train_test_split
X_train,X_test , y_train,y_test = train_test_split(X,y, test_size=0.1)
X_train=tf.keras.utils.normalize(X_train, axis=1)
X_test= tf.keras.utils.normalize(X_test,axis=1)
X_train= X_train.reshape(-1,IMG_SIZE*IMG_SIZE)
X_test= X_test.reshape(-1,IMG_SIZE*IMG_SIZE)
from sklearn.neighbors import KNeighborsClassifier as kn
from sklearn.multioutput import MultiOutputClassifier
knni= kn(n_neighbors =5)
knn = MultiOutputClassifier(knni, n_jobs=-1)
knn.fit(X_train,y_train)
~.conda\envs\nimrod\lib\shutil.py in _rmtree_unsafe(path, onerror) 391 其他: 392 尝试: --> 393 os.unlink(全名) 394 除了 OSError: 395 onerror(os.unlink,全名,sys.exc_info())
PermissionError: [WinError 32] 进程无法访问文件 因为它正在被另一个进程使用: 'C:\Users\NIMROID\AppData\Local\Temp \joblib_memmapping_folder_9268_8897152710 \9268-2914779649472-8c4617f562464b2e82b25e82d72afe18.pkl' MemoryError Traceback(最近一次调用最后一次) ~.conda\envs\nimrod\lib\site-packages\joblib\parallel.py 在检索(自我) 907 如果 getattr(self._backend, 'supports_timeout', False): --> 908 self._output.extend(job.get(timeout=self.timeout)) 909 其他:
~\.conda\envs\nimrod\lib\site-packages\joblib\_parallel_backends.py inwrap_future_result(未来,超时) 553尝试: --> 554 返回future.result(timeout=timeout) 555 除了 LokyTimeoutError:
【问题讨论】:
标签: python image classification knn