model.compile(loss=losses.categorical_crossentropy, optimizer=optimizers.Adadelta(), metrics=['accuracy']) print(model.summary()) tensorboard = TensorBoard(log_dir='{0}'.format(log_dir)) # weights.{epoch:02d}-{val_loss:.2f}.hdf5 : a kind of code rule ckpt_filepath = './{0}'.format(ckpt_dir) + '/weights.{epoch:02d}-{val_loss:.2f}.h5' checkpointer = ModelCheckpoint(filepath=ckpt_filepath, monitor='val_loss') history = model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs, verbose=1, callbacks=[tensorboard, checkpointer], validation_data=(x_test, y_test)) model_name = '{0}/cifar10_lenet.h5'.format(model_dir) model.save(model_name) del model model = load_model(model_name) score = model.evaluate(x_test, y_test, verbose=0) print('Test loss:', score[0]) print('Test accuracy:', score[1])
model = load_model(filename) initial_epoch = int(filename.split('weights.')[-1].split('-')[0]) print('restore from ckpt, initial_echo = {0}'.format(initial_epoch)) print(model.summary()) tensorboard = TensorBoard(log_dir='./logs_lenet') # weights.{epoch:02d}-{val_loss:.2f}.hdf5 : a kind of code rule checkpointer = ModelCheckpoint( filepath='./ckpt_lenet/weights.{epoch:02d}-{val_loss:.2f}.h5', monitor='val_loss') history = model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs, verbose=1, callbacks=[tensorboard, checkpointer], validation_data=(x_test, y_test), initial_epoch=initial_epoch) model.save('model/mnist_lenet.h5') del model model = load_model('model/mnist_lenet.h5') score = model.evaluate(x_test, y_test, verbose=0) print('Test loss:', score[0]) print('Test accuracy:', score[1])
same_face = [] diff_face = [] for i in range(9999): # 如果两张图片标签相同,则将两个图片作为相同组样本 if labels[i] == labels[i + 1]: same_face.append([images[i], images[i + 1]]) # 如果两张图片标签不同,则作为差异组样本 else: diff_face.append([images[i], images[i + 1]]) # 转化为numpy.ndarray,便于传入keras构造的神经网络进行计算 x_train1 = np.array([f[0] for f in same_face + diff_face]) x_train2 = np.array([f[1] for f in same_face + diff_face]) y_train = np.array([1 for i in same_face] + [0 for j in diff_face]) # 如果有模型文件存在,则导入之前的模型参数继续计算 if os.path.exists("H:/face_detection/LeNet.h5"): LeNet = load_model("H:/face_detection/LeNet.h5") print("model loaded") # 使用重构后的generator进行训练 LeNet.fit_generator(generator=get_train_batch([x_train1, x_train2], y_train, batch_size=100), steps_per_epoch=100, epochs=5) # 保存模型 LeNet.save("H:/face_detection/face_detection/LeNet.h5")