【问题标题】:KNN image classifier: permission and memory errorsKNN图像分类器:权限和内存错误
【发布时间】: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 in

wrap_future_result(未来,超时) 553尝试: --> 554 返回future.result(timeout=timeout) 555 除了 LokyTimeoutError:

【问题讨论】:

    标签: python image classification knn


    【解决方案1】:

    阅读您的错误信息:

    PermissionError: [WinError 32] The process cannot access the file because it is being used by another process

    就这么简单吗?

    【讨论】:

    • 我遗漏了大部分错误,我的代码有什么理想的错误吗?
    【解决方案2】:

    我很抱歉,嗯

    for features, label in training_data:
             X.append(features)
            y.append(features)
    

    应该是错的

    for features, label in training_data:
             X.append(features)
            y.append(label)
    

       from sklearn.neighbors import KNeighborsClassifier as kn
       from sklearn.multioutput import MultiOutputClassifier
       knni= kn(n_neighbors =5)
       knn = MultiOutputClassifier(knni, n_jobs=-1) #wrong
    

    应该是

    from sklearn.neighbors import KNeighborsClassifier as kn
    knn= kn(n_neighbors =5)
    knn.fit(X_train,y_train)
    

    它工作得很好,给我 59% 的准确率爱你们

    【讨论】:

      猜你喜欢
      • 2019-05-26
      • 1970-01-01
      • 2015-04-13
      • 2015-03-11
      • 2015-01-06
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 2015-08-23
      相关资源
      最近更新 更多