Это мой первый вопрос в Stackoverflow.
Прямо сейчас я работаю над созданием модели CNN для некоторой практики в ней и пока делаю это с набором данных, предоставленным сайтом с открытым исходным кодом, получая результаты, которыене так, как ожидалось.
Позвольте мне объяснить это с помощью кода, чтобы вы могли легко исправить меня.
Я пытаюсь создать сверточную сеть.После моделирования с данными, не получая результатов, как ожидалось.
Я пытался изменить аргументы.Но не повезло в этом.
Также попытался добавить больше скрытых слоев.Но результаты такие же.
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
from keras.layers import Dropout
classifier = Sequential()
classifier.add(Conv2D(64, (3, 3), input_shape = (128, 128, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Conv2D(64, (3, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Dropout(0.5))
classifier.add(Flatten())
classifier.add(Dense(units = 128, activation = 'relu'))
classifier.add(Dense(units = 102, activation = 'sigmoid'))
classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True)
test_datagen = ImageDataGenerator(rescale = 1./255)
training_set = train_datagen.flow_from_directory('data/train',
target_size = (128, 128),
batch_size = 32,
class_mode = 'categorical')
test_set = test_datagen.flow_from_directory('data/test2',
target_size = (128, 128),
batch_size = 32,
class_mode = 'categorical')
classifier.fit_generator(training_set,
steps_per_epoch = 17522,
epochs = 3,
validation_data = test_set,
validation_steps = 1020)
import numpy as np
from keras.preprocessing import image
overall=[]
for i in range (18540, 20549):
test_image = image.load_img('data/test/' +str(i)+'.jpg', target_size = (128, 128))
test_image = image.img_to_array(test_image)
test_image = np.expand_dims(test_image, axis = 0)
result = classifier.predict(test_image)
res=np.argmax(result)
overall.append(i)
overall.append(res+1)
Фактический результат:
overall[:30]
Out[12]:
[18540,
51,
18541,
51,
18542,
51,
18543,
51,
18544,
51,
18545,
51,
18546,
51,
18547,
51,
18548,
51,
18549,
51,
18550,
51,
18551,
51,
18552,
51,
18553,
51,
18554,
51]
Но результаты должны быть другими.