model = Conv2D(64, (3, 3), padding='same', kernel_initializer='he_normal')(model) model = Activation('relu')(model) model = Conv2D(64, (3, 3), padding='same', kernel_initializer='he_normal')(model) model = Activation('relu')(model) model = Conv2D(64, (3, 3), padding='same', kernel_initializer='he_normal')(model) model = Activation('relu')(model) model = Conv2D(1, (3, 3), padding='same', kernel_initializer='he_normal')(model) res_img = model output_img = add([res_img, input_img]) model = Model(input_img, output_img) # model.load_weights('./checkpoints/weights-improvement-20-26.93.hdf5') adam = Adam(lr=0.001, decay=1e-5, clipvalue=0.1, epsilon=1e-8) sgd = SGD(lr=1e-2, momentum=0.9, decay=1e-4, nesterov=False) model.compile(adam, loss='mse', metrics=[PSNR, "accuracy"]) model.summary() # 每个epoch保存一次模型 filepath = "./checkpoints2/vdsr-{epoch:02d}-{PSNR:.2f}.hdf5" checkpoint = ModelCheckpoint(filepath, monitor=PSNR, verbose=1, mode='max') callbacks_list = [checkpoint] # 记录每次训练的loss,PSNR值 train_log = CSVLogger(filename="train.log") model.fit(x=train_input, y=train_label, batch_size=BATCH_SIZE, epochs=EPOCHS, callbacks=callbacks_list, shuffle=True) print("Done training!!!")
hyper_net = LatentHyperNet(n_comp=19, model=model, layers=layers, dm_method='pls') hyper_net.fit(X_train, y[train_idx]) X_train = hyper_net.transform(X_train) X_test = hyper_net.transform(X_test) inp = Input((X_train.shape[1],)) fc = Dense(n_class)(inp) model = Activation('softmax')(fc) model = Model(inp, model) model.compile(loss='categorical_crossentropy', metrics=['accuracy'], optimizer='Adadelta') callbacks = [cm.custom_stopping(value=cm.loss, verbose=2)] model.fit(X_train, y[train_idx], batch_size=len(X_train), epochs=4*cm.n_ep,#The drawback of the method is that it requires more iterations to converge (loss <= cm.loss) verbose=0, callbacks=callbacks, validation_data=(X_train, y[train_idx])) y_pred = model.predict(X_test) y_pred = np.argmax(y_pred, axis=1) y_true = np.argmax(y[test_idx], axis=1) acc_fold = accuracy_score(y_true, y_pred) avg_acc.append(acc_fold) recall_fold = recall_score(y_true, y_pred, average='macro') avg_recall.append(recall_fold) f1_fold = f1_score(y_true, y_pred, average='macro') avg_f1.append(f1_fold)