Итак, я построил сверточную нейронную сеть в Керасе для классификации.Я загружаю обучающие, проверочные и тестовые изображения из функции 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'])