Как выбрать подходящее значение для шага в Foregnet_generator? - PullRequest
0 голосов
/ 04 декабря 2018

Итак, я построил сверточную нейронную сеть в Керасе для классификации.Я загружаю обучающие, проверочные и тестовые изображения из функции flow_from_directory в ImageDataGenerator пакет в керасах.Я могу отлично обучить нейронную сеть, и я использую функцию Foregnet_Generator , чтобы предсказать метки классов для моих тестовых изображений (79 726 изображений).

Итак, мой код выглядит следующим образом:

network_output=model.predict_generator(test_set,steps=79726 ,verbose=1)

Вывод сети - это, в основном, вероятности для каждого из моих 10 классов.Таким образом, размер network_output должен составлять 79726 строк и 10 столбцов, однако фактические размеры network_output составляют 255074 строк и 10 столбцов.Что больше выходов, чем должно быть!Я нашел количество выходных изменений с параметром steps.Как я могу выбрать значение шага, чтобы получить правильное количество выходов.

Пожалуйста, дайте мне знать в разделе комментариев / ответов, если необходимы дополнительные пояснения / код, чтобы лучше объяснить проблему.

Редактировать: вот структура сети: input_size is32

from keras.models import Sequential
from keras.layers import Flatten,BatchNormalization
from keras.layers import Dense,Dropout
from keras.layers.convolutional import Conv2D
from keras.layers.pooling import MaxPooling2D 
from keras.layers.normalization import BatchNormalization

model = Sequential()
model.add(Conv2D(16, 3, input_shape = (input_size, input_size, 3),activation = 'relu'))      
model.add(Conv2D(16, 3, activation = 'relu'))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2,2)))
model.add(Conv2D(32, 3, activation = 'relu'))       
model.add(Conv2D(32, 3,  activation = 'relu'))
​model.add(MaxPooling2D(pool_size=(2, 2), strides=(2,2)))
model.add(Flatten())
model.add(Dense(10, activation='softmax'))
model.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])

...