def build_model():
model = Sequential()
# ???????4????????????5*5?1??????????,????1??
model.add(Convolution2D(4, 5, 5, border_mode='valid', dim_ordering='th', input_shape=(1, 20, 20)))
model.add(ZeroPadding2D((1, 1)))
model.add(BatchNormalization())
model.add(Activation('tanh'))
# ???????8????????????3*3?4??????????????????????
model.add(GaussianNoise(0.001))
model.add(UpSampling2D(size=(2, 2), dim_ordering='th'))
model.add(AtrousConvolution2D(16, 3, 3, border_mode='valid', dim_ordering='th'))
model.add(ZeroPadding2D((1, 1)))
model.add(BatchNormalization())
model.add(Activation('tanh'))
# model.add(MaxPooling2D(pool_size=(2, 2), dim_ordering='th'))
model.add(AveragePooling2D(pool_size=(2, 2), dim_ordering='th'))
model.add(Activation('tanh'))
# ???????16????????????4*4
model.add(AtrousConvolution2D(8, 3, 3, border_mode='valid', dim_ordering='th'))
model.add(ZeroPadding2D((1, 1)))
model.add(BatchNormalization())
model.add(Activation('linear'))
# ???????16????????????4*4
model.add(GaussianNoise(0.002))
model.add(AtrousConvolution2D(4, 3, 3, border_mode='valid', dim_ordering='th'))
model.add(ZeroPadding2D((1, 1)))
model.add(BatchNormalization())
model.add(Activation('tanh'))
model.add(Dropout(0.2))
# model.add(MaxPooling2D(pool_size=(2, 2), dim_ordering='th'))
model.add(AveragePooling2D(pool_size=(2, 2), dim_ordering='th'))
model.add(Activation('tanh'))
# ??????????????????flatten????
model.add(Flatten())
model.add(Dense(8))
model.add(BatchNormalization())
model.add(Activation('tanh'))
model.add(Dense(1))
model.add(Activation('linear'))
start = time.time()
# ??SGD + momentum
# model.compile????loss??????(????)
# sgd = SGD(lr=0.05, decay=1e-6, momentum=0.9, nesterov=True)
# model.compile(loss="mse", optimizer=sgd)
model.compile(loss="mse", optimizer="rmsprop") # mse kld # Nadam rmsprop
print "Compilation Time : ", time.time() - start
return model
评论列表
文章目录