''' Created on 2019年4月11日 @author: User ''' from keras import layers,models,losses,optimizers from BiddingKG.dl.common.Utils import * def getTextCNNModel(vocab,embedding_weights,input_shape=(3,50,100),classes=3): input_left = layers.Input(shape=(input_shape[1],)) input_center = layers.Input(shape=(input_shape[1],)) input_right = layers.Input(shape=(input_shape[1],)) list_kernel = [3,6] out_left = [] out_center = [] out_right = [] embedding = layers.Embedding(len(vocab),input_shape[2],weights=[embedding_weights] if embedding_weights is not None else None,trainable=True,name="char_embeding") for kernel in list_kernel: out_left.append(layers.Conv1D(10, kernel, activation="relu",padding='same')(embedding(input_left))) concat_left = layers.merge(out_left,mode="concat") for kernel in list_kernel: out_center.append(layers.Conv1D(4,kernel,activation="relu",padding="same")(embedding(input_center))) concat_center = layers.merge(out_center,mode="concat") for kernel in list_kernel: out_right.append(layers.Conv1D(10,kernel,activation="relu",padding="same")(embedding(input_right))) concat_right = layers.merge(out_right,mode="concat") matrix_left = layers.Dense(12,activation="relu")(concat_left) matrix_center = layers.Dense(12,activation="relu")(concat_center) matrix_right = layers.Dense(12,activation="relu")(concat_right) #layers.average(inputs) concat_matrix = layers.merge([matrix_left,matrix_center,matrix_right],mode="ave") flattern = layers.Flatten()(concat_matrix) out = layers.Dense(classes,activation="softmax")(flattern) model = models.Model([input_left,input_center,input_right],out) model.compile(optimizer=optimizers.Adam(lr=0.001), loss=losses.categorical_crossentropy, metrics=[precision,recall,f1_score]) model.summary() return model import tensorflow as tf if __name__=="__main__": with tf.Graph().as_default() as g: getTextCNNModel() for _vars in tf.global_variables(): print(_vars.name,_vars)