def build_model():
model = Sequential()
# ???????4????
model.add(Convolution2D(8, 5, 5, border_mode='valid', dim_ordering='th', input_shape=(1, 20, 20)))
model.add(ZeroPadding2D((1, 1)))
model.add(GaussianNoise(0.001))
model.add(Activation('tanh'))
model.add(MaxPooling2D(pool_size=(2, 2), dim_ordering='th'))
model.add(Activation('tanh'))
# ???????8?????
# 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(Activation('tanh'))
# model.add(MaxPooling2D(pool_size=(2, 2), dim_ordering='th'))
# model.add(Activation('tanh'))
# ??????????????????flatten????
model.add(Flatten())
model.add(Dense(20))
model.add(Activation('tanh'))
# LSTM ?
model.add(Reshape((20, 1)))
model.add(LSTM(input_dim=1, output_dim=32, activation='tanh', inner_activation='tanh', return_sequences=True))
model.add(GaussianNoise(0.01))
model.add(LSTM(64, activation='tanh', inner_activation='tanh', return_sequences=False))
model.add(Dropout(0.2)) # Dropout overfitting
model.add(Dense(1))
model.add(Activation('linear'))
start = time.time()
# ??SGD + momentum
# model.compile????loss??????(????)
# sgd = SGD(lr=0.08, decay=1e-6, momentum=0.9, nesterov=True)
# model.compile(loss="mse", optimizer=sgd)
model.compile(loss="mse", optimizer="Nadam") # Nadam # rmsprop
print "Compilation Time : ", time.time() - start
return model
评论列表
文章目录