简体   繁体   中英

Python: The system cannot find the path specified: 'data'

I'm building a CNN using Python I have a folder of pictures for classification stored in D//Files directory however an exception keeps poping

code:

from keras.layers.core import Dense, Dropout, Activation, Flatten
from keras.layers.convolutional import Convolution2D, MaxPooling2D
from keras.utils import np_utils
from keras.preprocessing.image import  img_to_array



import numpy as np

# Image manipulations and arranging data
import os
from PIL import Image
import theano
theano.config.optimizer="None"

from sklearn.cross_validation import train_test_split
os.chdir("D:/File");

# input image dimensions
m,n = 50,50

path1="input";
path2="data";

classes=os.listdir(path2)

x=[]
y=[]
for fol in classes:
    print (fol)
    imgfiles=os.listdir(path2+'\\'+fol);
    for img in imgfiles:
        im=Image.open(path2+'\\'+fol+'\\'+img);
        im=im.convert(mode='RGB')
        imrs=im.resize((m,n))
        imrs=img_to_array(imrs)/255;
        imrs=imrs.transpose(2,0,1);
        imrs=imrs.reshape(3,m,n);
        x.append(imrs)
        y.append(fol)

x=np.array(x);
y=np.array(y);

batch_size=32
nb_classes=len(classes)
nb_epoch=20
nb_filters=32
nb_pool=2
nb_conv=3

x_train, x_test, y_train, y_test= train_test_split(x,y,test_size=0.2,random_state=4)

uniques, id_train=np.unique(y_train,return_inverse=True)
Y_train=np_utils.to_categorical(id_train,nb_classes)
uniques, id_test=np.unique(y_test,return_inverse=True)
Y_test=np_utils.to_categorical(id_test,nb_classes)

model= Sequential()
model.add(Convolution2D(nb_filters,nb_conv,nb_conv,border_mode='same',input_shape=x_train.shape[1:]))
model.add(Activation('relu'));
model.add(Convolution2D(nb_filters,nb_conv,nb_conv));
model.add(Activation('relu'));
model.add(MaxPooling2D(pool_size=(nb_pool,nb_pool)));
model.add(Dropout(0.5));
model.add(Flatten());
model.add(Dense(128));
model.add(Dropout(0.5));
model.add(Dense(nb_classes));
model.add(Activation('softmax'));
model.compile(loss='categorical_crossentropy',optimizer='adadelta',metrics=['accuracy'])


nb_epoch=5;
batch_size=5;
model.fit(x_train,Y_train,batch_size=batch_size,nb_epoch=nb_epoch,verbose=1,validation_data=(x_test, Y_test))


files=os.listdir(path1);
img=files[0] 
im = Image.open(path1 + '\\'+img);
imrs = im.resize((m,n))
imrs=img_to_array(imrs)/255;
imrs=imrs.transpose(2,0,1);
imrs=imrs.reshape(3,m,n);

x=[]
x.append(imrs)
x=np.array(x);
predictions = model.predict(x)

however this script does not run and gives me this in the consolem it seems that the path specified is not recognised (I'm using Windows with Python 3.6 and Spyder environment)

runfile('C:/Users/Monirah/.spyder-py3/semi1.py', 
wdir='C:/Users/Monirah/.spyder-py3')
Traceback (most recent call last):

File "<ipython-input-13-144f8465de97>", line 1, in <module>
runfile('C:/Users/Monirah/.spyder-py3/semi1.py', 
wdir='C:/Users/Monirah/.spyder-py3')

File "C:\Users\Monirah\Anaconda3\lib\site-
packages\spyder\utils\site\sitecustomize.py", line 710, in runfile
execfile(filename, namespace)

File "C:\Users\Monirah\Anaconda3\lib\site-
packages\spyder\utils\site\sitecustomize.py", line 101, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)

File "C:/Users/Monirah/.spyder-py3/semi1.py", line 26, in <module>
classes=os.listdir(path2)

FileNotFoundError: [WinError 3] The system cannot find the path specified: 
'data'

使用debug或先打印出程序中使用的所有路径,然后检查它们是否有效。

  1. Use "\\" in windows for paths Ex: c:\\mydir
  2. After os.chdir("D:/File"); , do print os.getcwd() & check whether current directory is same as the path used in os.chdir()
  3. Now check whether print os.path.exists(path2) exists in your current directory.

Note: Always use os.path.join() for file path manipulations. This works well irrespective of the underlying OS.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM