import numpy as np if __name__ == '__main__': if platform.system() == 'Windows': folder = 'C:/data/train_data' elif platform.system() == 'Linux': folder = '/home/shaoheng/Documents/PythonPractice/handwritedigit' batch = 5 class_num = 10 data_generator = DataGenerator(folder, batch, (16, 16), class_num=class_num) model = MlpBatch(input_nodes=16 * 16, hidden_nodes=(12, class_num), batch_size=batch) right = 0 for i in range(1000000): if (i + 1) % 100 == 0: print('acc=%.2f' % (right / (i * batch) * 100), '%') x, y = data_generator.load_data() out = model.forward_prop(x) model.back_prop(x, y) for b in range(batch): if np.argmax(y[b]) == np.argmax(out[b]): right += 1
folder = 'C:/data/train_data' test_folder = 'C:/data/test_data' elif platform.system() == 'Linux': folder = '/home/shaoheng/Documents/PythonPractice/handwritedigit' batch = 32 class_num = 10 data_generator = DataGenerator(folder, batch, (16, 16), class_num=class_num) valid_data_gen = DataGenerator(test_folder, 160, (16, 16), class_num=class_num) valid_x, valid_y = valid_data_gen.load_data() train_data_gen = DataGenerator(folder, 320, (16, 16), class_num=class_num) train_full_x, train_full_y = train_data_gen.load_data() def forward(x): for deep, now_layer in enumerate(model): if type(now_layer) == Conv2D and deep == 0: x = np.expand_dims(x, -1) elif type(now_layer) == FC: x = np.reshape( x, (np.shape(x)[0], -1)) # flatten for feeding into FC x = now_layer.forward_prop(x) return x def backward(y):