I'm trying to do classification but I have this error
import os,cv2
import numpy as np
from sklearn.utils import shuffle
from tensorflow.python.keras.preprocessing.image import ImageDataGenerator
from sklearn.model_selection import train_test_split
from keras import backend as k
k.set_image_dim_ordering('tf')
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras.optimizers import SGD, RMSprop, Adam,
Adagrad,Adadelta,Adamax,Nadam
from keras import callbacks
from keras.models import load_model
img_rows =150
img_cols=150
num_epoch=50
optimizador='Adadelta'
PATH = os.getcwd()
data_path = PATH + '\variedades'
labels_t=[]
num_classes=2
img_data=[]
input_shape=0
model=0
X_train=''
X_val=''
y_train=''
y_val=''
def carga_dataset():
global img_rows
global img_cols
global data_path
global labels_t
global img_data
img_data_list=[]
n_imag=0
n_imag_array=[]
n_imag_cont=0
print('ESTRAYENDO DATASET DE LA SIGUIENTE DIRECCION: ' +data_path)
data_dir_list = os.listdir(data_path)
for dataset in data_dir_list:
img_list=os.listdir(data_path+'/'+dataset)
print('CARGANDO IMAGENES DE LA CARPERTA ->'+'{}\n'.format(dataset))
for img in img_list:
n_imag+=1
input_img=cv2.imread(data_path+'/'+dataset+'/'+img)
input_img=cv2.cvtColor(input_img,cv2.COLOR_BGR2GRAY)
input_img_resize=cv2.resize(input_img,(img_rows,img_cols))
img_data_list.append(input_img_resize)
n_imag_array.append(n_imag)
n_imag_cont+=1
img_data = np.array(img_data_list)
img_data = img_data.astype('float32')
img_data/= 255
img_data = np.expand_dims(img_data,axis=4)
num_of_samples = img_data.shape[0]
labels = np.ones((num_of_samples,),dtype='int64')
labels[0:n_imag_array[0]]=0
labels[n_imag_array[0]]:n_imag_array[1]=1
labels_t = labels
def clasificacion_imagenes(labels_t,num_classes):
print('SE HAN CARGADO',end=' ')
print (len(labels_t),end=' ')
print('IMAGENES EN TOTAL')
Y = np_utils.to_categorical(labels_t,num_classes)
x,y= shuffle(img_data,Y,random_state=2)
print('SE HAN GENERADO',end=" ")
print(len(x),end='')
print('VECTORES')
print('SE HAN GENERADO',end=" ")
print(len(y),end=" ")
print('ETIQUETAS')
global X_train,X_val,y_train,y_val
X_train,X_val,y_val,y_train=train_test_split(x,y,test_size=0.2, random_state=2)
global input_shape
input_shape=img_data[0].shape
def crear_modelo(input_shape):
global model
global X_train, X_val, y_train, y_val
global optimizador
model = Sequential()
model.add(Conv2D(32,(3,3),padding='same',input_shape=input_shape))
model.add(Activation('relu'))
model.add(Conv2D(32,(3,3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.5))
model.add(Conv2D(64,(3,3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.5))
model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy',optimizer=optimizador,metrics=["accuracy"])
tbCallBack =callbacks.TensorBoard(log_dir='./log'+optimizador+'-gpu-todo',histogram_freq=1,write_graph=True,write_images=False)
tbCallBack.set_model(model)
print('REALIZANDO ENTRENAMIENTO')
hist = model.fit(X_train,y_train,batch_size=4,epochs=num_epoch,verbose=1,validation_data=(X_val,y_val),callbacks=[tbCallBack])
def guardar_modelo(model):
print('GUARDANDO MODELO')
model.save('model.hdf5')
loaded_model=load_model('model.hdf5')
print('MODELO GUARDADO')
carga_dataset()
clasificacion_imagenes(labels_t,num_classes)
crear_modelo(input_shape)
guardar_modelo(model)
and this is the error I get
C:\Users\Angelo\AppData\Local\Programs\Python\Python36\lib\site-
packages\sklearn\externals\joblib\externals\cloudpickle\cloudpickle.py:47:
DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
import imp
Using TensorFlow backend.
EXTRAYENDO DATASET DE LA SIGUIENTE DIRECCION: C:\Users\Angelo\Desktop\app procesamiento de imagenes\variedades
CARGANDO IMAGENES DE LA CARPERTA ->gato
CARGANDO IMAGENES DE LA CARPERTA ->perro
SE HAN CARGADO 8000 IMAGENES EN TOTAL
SE HAN GENERADO 8000VECTORES
SE HAN GENERADO 8000 ETIQUETAS
REALIZANDO ENTRENAMIENTO
Traceback (most recent call last):
File "C:\Users\Angelo\Desktop\app procesamiento de imagenes\aprendizaje.py", line 141, in <module>
crear_modelo(input_shape)
File "C:\Users\Angelo\Desktop\app procesamiento de imagenes\aprendizaje.py", line 131, in crear_modelo
hist = model.fit(X_train,y_train,batch_size=4,epochs=num_epoch,verbose=1,validation_data=(X_val,y_val),callbacks=[tbCallBack])
File "C:\Users\Angelo\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\training.py", line 952, in fit
batch_size=batch_size)
File "C:\Users\Angelo\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\training.py", line 804, in _standardize_user_data
check_array_length_consistency(x, y, sample_weights)
File "C:\Users\Angelo\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\training_utils.py", line 237, in check_array_length_consistency
'and ' + str(list(set_y)[0]) + ' target samples.')
ValueError: Input arrays should have the same number of samples as target arrays. Found 6400 input samples and 1600 target samples.