from tensorflow.keras import Sequential from tensorflow.keras.layers import Conv2D, MaxPool2D, Dense, Flatten, Dropout, BatchNormalization from tensorflow.keras.preprocessing.image import ImageDataGenerator from collections import Counter Generator = ImageDataGenerator(rotation_range = 40, shear_range = 0.15, zoom_range = 0.4) models =  eva_list =  for i in range(5): X_train, X_test, Y_train, Y_test = train_test_split(train_image, label_image, test_size = 0.3) Train_generator = Generator.flow(X_train, Y_train, batch_size = 128) model = Sequential() #Conv 2D layer here( not important) model.add(Dense(10, activation="softmax")) model.compile(optimizer='adam',loss='CategoricalCrossentropy', metrics=['accuracy']) model.summary() model.fit(Train_generator, batch_size= 128, epochs= 50, verbose=2) eva_list.append(model.evaluate(X_test, Y_test, verbose=1)) models.append(model) test = test/ 255 test = test.to_numpy().reshape((-1, 28, 28, 1)) result_group =  for i in range(len(models)): #loop through the models to make prediction with each model, store the result in result group temp_result = models[i].predict(test) result_group.append(np.argmax(temp_result, axis = 1)) result =  #loop through each test index, create a temporary list and find the most chosen number and use that as a final result for i in range(len(result_group)): compare =  for z in range(len(result_group)): compare.append(result_group[z][i]) common = Counter(compare) result.append(common.most_common(1)) print(result)
I have spent multiple days on the MNIST dataset. I have trained a rather deep CNN model and get a good 99.1 percent result. However, after reading some discussion posts I figured it may be a good idea to do bagging to increase the accuracy. My approach is basically to create a list to store those newly trained CNN models. And in the end, using a for loop to do prediction on each of the models. However I don't know where I made a mistake, now all my model output predict 1 for all test data. Anyone can tell me what's going on?