如下是Keras的实现过程:
- model = Sequential()
- model.add(BatchNormalization(input_shape=(96, 96, 1)))
- model.add(Convolution2D(24, 5, 5, border_mode=”same”,
- init=’he_normal’, input_shape=(96, 96, 1),
- dim_ordering=”tf”))
- model.add(Activation(“relu”))
- model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2),
- border_mode=”valid”))
- model.add(Convolution2D(36, 5, 5))
- model.add(Activation(“relu”))
- model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2),
- border_mode=”valid”))
- model.add(Convolution2D(48, 5, 5))
- model.add(Activation(“relu”))
- model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2),
- border_mode=”valid”))
- model.add(Convolution2D(64, 3, 3))
- model.add(Activation(“relu”))
- model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2),
- border_mode=”valid”))
- model.add(Convolution2D(64, 3, 3))
- model.add(Activation(“relu”))
- model.add(GlobalAveragePooling2D());
- model.add(Dense(500, activation=”relu”))
- model.add(Dense(90, activation=”relu”))
- model.add(Dense(30))
你可能想选择均方根传播(rmsprop)优化和均方误差(MSE)作为损掉函数和精度指标。只须要在输入图像上应用批处理正常化和全局平均遍历(global average polling)和HE normal weight初始化,你就可以在30个练习周期内获得80%-90%的验证精确率并实现<0.001的误差:
- model.compile(optimizer=’rmsprop’, loss=’mse’, metrics=
- [‘accuracy’])
- checkpointer = ModelCheckpoint(filepath=’face_model.h5',
- verbose=1, save_best_only=True)
- epochs = 30
- hist = model.fit(X_train, y_train, validation_split=0.2,
- shuffle=True, epochs=epochs, batch_size=20, callbacks=
- [checkpointer], verbose=1)
推荐阅读
办事器中的 “U” 代表什么意思 ?“U”在办事器范畴中特指机架式办事器厚度,是一种表示>>>详细阅读
地址:http://www.17bianji.com/lsqh/37128.html
1/2 1