Keras实现CNN、RNN(基于attention 的双向RNN)及两者的融合
2018年04月24日 10:50:34 AI_盲 阅读数 7920更多
分类专栏: python 算法 machine learning deep learning keras
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xwd18280820053/article/details/80060544
本文主要采用CNN,RNN对时序数据进行二分类
CNN处理时序数据的二分类
-
model = Sequential()
-
model.add(Conv1D(128, 3, padding='same', input_shape=(max_lenth, max_features)))
-
model.add(BatchNormalization())
-
model.add(Activation('relu'))
-
model.add(Conv1D(256, 3))
-
model.add(BatchNormalization())
-
model.add(Activation('relu'))
-
model.add(Conv1D(128, 3))
-
model.add(BatchNormalization())
-
model.add(Activation('relu'))
-
model.add(GlobalAveragePooling1D()) #时序的时间维度上全局池化
-
model.add(Dropout(0.5))
-
model.add(Dense(1))
-
model.add(Activation('sigmoid'))
-
model.compile(loss='binary_crossentropy',
-
optimizer='adam',
-
metrics=[metrics.binary_crossentropy])
双层RNN处理时序数据的二分类
-
import numpy as np
-
import tensorflow as tf
-
from keras.models import Sequential
-
from keras.layers import Dense, Dropout
-
from keras.layers import GRU
-
import keras
-
from keras import regularizers
-
from keras.callbacks import EarlyStopping
-
from sklearn.metrics import roc_auc_score
-
from sklearn.cross_validation import StratifiedKFold
-
from keras import backend as K
-
import my_callbacks
-
from keras.layers.normalization import BatchNormalization
-
import keras.backend.tensorflow_backend as KTF
-
max_lenth = 23
-
max_features = 12
-
training_iters = 2000
-
train_batch_size = 800
-
test_batch_size = 800
-
n_hidden_units = 64
-
lr = 0.0003
-
cb = [
-
my_callbacks.RocAucMetricCallback(), # include it before EarlyStopping!
-
EarlyStopping(monitor='roc_auc_val',patience=200, verbose=2,mode='max')
-
]
-
model = Sequential()
-
model.add(keras.layers.core.Masking(mask_value=0., input_shape=(max_lenth, max_features)))
-
model.add(GRU(units=n_hidden_units,activation='selu',kernel_initializer='orthogonal', recurrent_initial