keras concatenate_keras-使用keras.backend时去掉警告

5def306e87dfe1f7c5711fdec70a0ffc.png

今天在研读角色识别代码时,一时兴起想看看共指消解系统的summary,结果在summar打印的各层信息之间多了一堆警告,本来共指消解系统就是3个神经网络模型彼此连接,每隔一小段就会在网络层之间打出一堆WARNING,看着就难受,结果查了一下怎么关掉警告,百度了一下午,没找到能解决的方法,全是让设置os.environ的,而角色识别代码使用了keras.backend模块,所以使用os.environ根本就不起作用,还有一堆胡扯八道的,告诉版本有问题,后来发现好几个告警的都是tensorflow_backend.py文件,如下所示

WARNING:tensorflow:From /Users/yufei/git_code/information_extraction/character_identification/python/experiments/latest/model/coref.py:32: 
The name tf.GPUOptions is deprecated. Please use tf.compat.v1.GPUOptions instead.

2019-09-29 20:54:10.659388: I tensorflow/compiler/xla/service/service.cc:168] 
XLA service 0x7f8081c01700 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2019-09-29 20:54:10.659460: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
WARNING:tensorflow:From 
/Users/yufei/anaconda3/envs/py36/lib/python3.6/site-packages/Keras-2.2.5-py3.6.egg/keras/backend/tensorflow_backend.py:4274: 
The name tf.nn.max_pool is deprecated. Please use tf.nn.max_pool2d instead.

WARNING:tensorflow:From 
/Users/yufei/anaconda3/envs/py36/lib/python3.6/site-packages/Keras-2.2.5-py3.6.egg/keras/backend/tensorflow_backend.py:3740: 
calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.

于是用Google搜了一下"tensorflow_backend.py warning",在keras的github上找到了答案

The TensorFlow warnings when I'm trying to create a Keras model · Issue #8742 · keras-team/keras​github.com
839b5be8be002d8e0738b761fa36d353.png

下边给出角色识别中共指消解系统的模型构建代码,代码中将summary和模型图都输出了。注意添加下边的这行代码,表示关掉警告。

import 

完整代码如下:

import tensorflow as tf
tf.logging.set_verbosity(tf.logging.ERROR)
pftdim = 6
mftdim = 72
eftdims = [(3, 50), (8, 50), (5, 50), (5, 50)]
nb_fltrs = 280
nb_efts = 4

# 设置GPU选项
gpu=None
gpu_num = 1
gpu_opts = tf.GPUOptions(allow_growth=True, visible_device_list=','.join(map(str, gpu) if gpu else []))
# 实例化会话对象
sess = tf.InteractiveSession(config=tf.ConfigProto(allow_soft_placement=True, gpu_options=gpu_opts))
# with tf.compat.v1.Session(config=tf.ConfigProto(allow_soft_placement=True, gpu_options=gpu_opts)) as sess: 
# 将Keras作为tensorflow的精简接口
K.set_session(sess)
# 指定tensorflow运行的GPU或CPU设备
with tf.device('/device:GPU:%d' % gpu_num):
    # 定义共指消解输入层
    # 1. mention-pair的输入
    mm_pft = Input(shape=(pftdim,))
    # 2. mention1的输入, mention2的输入
    m1_mft, m2_mft = Input(shape=(mftdim,)), Input(shape=(mftdim,))
    # 3. 针对某个mention抽取出的所有特征的输入
    m1_efts = [Input(shape=(r, d)) for r, d in eftdims]
    # 4. 针对某个mention抽取出的所有特征的输入
    m2_efts = [Input(shape=(r, d)) for r, d in eftdims]

    # mention表达的命名空间
    with tf.name_scope('mrepr'):
        expand_dims, reshape_df, dropout = [], Reshape((nb_fltrs,)), Dropout(0.8)
        # 所有特征的1-gram卷积层序列,2-gram卷积层序列,3-gram卷积层序列,1-gram池化层序列,2-gram池化层序列,3-gram池化层序列
        eft_c1rs, eft_c2rs, eft_c3rs, eft_p1rs, eft_p2rs, eft_p3rs = [], [], [], [], [], []
        # 遍历每1个抽取出的特征的维度信息
        for r, d in eftdims:
            expand_dims.append(Reshape((r, d, -1)))
            # CONV1 卷积核窗口为1个单词,即1-gram滤波器,从卷积层输入形状(None, 2, 286, 1)表示channels为1,因此相当于Conv1D
            eft_c1rs.append(Conv2D(nb_fltrs, (1, d), activation='tanh'))
            # CONV1 卷积核窗口为2个单词,即2-gram滤波器
            eft_c2rs.append(Conv2D(nb_fltrs, (2, d), activation='tanh'))
            # CONV1 卷积核窗口为3个单词,即3-gram滤波器
            eft_c3rs.append(Conv2D(nb_fltrs, (3, d), activation='tanh'))
            # CONV1 卷积核窗口为1个单词的池化层
            eft_p1rs.append(MaxPooling2D(pool_size=(r - 0, 1)))
            # CONV1 卷积核窗口为2个单词的池化层
            eft_p2rs.append(MaxPooling2D(pool_size=(r - 1, 1)))
            # CONV1 卷积核窗口为3个单词的池化层
            eft_p3rs.append(MaxPooling2D(pool_size=(r - 2, 1)))

        # CONV2
        nb_rows, mrepr_conv = 3 * nb_efts, Conv2D(nb_fltrs, (1, nb_fltrs), activation='tanh')
        reshape_cefts, mrepr_pool = Reshape((nb_rows, nb_fltrs, -1)), MaxPooling2D(pool_size=(nb_rows, 1))

        def mrepr(m_efts, m_mft, name=None):
            eft_v1rs, eft_v2rs, eft_v3rs = [], [], []
            for expand_dim, eft, c1r, c2r, c3r, p1r, p2r, p3r 
                    in zip(expand_dims, m_efts, eft_c1rs, eft_c2rs, eft_c3rs, eft_p1rs, eft_p2rs, eft_p3rs):
                eft_e = expand_dim(eft)
                eft_v1rs.append(dropout(reshape_df(p1r(c1r(eft_e)))))
                eft_v2rs.append(dropout(reshape_df(p2r(c2r(eft_e)))))
                eft_v3rs.append(dropout(reshape_df(p3r(c3r(eft_e)))))

            eft_mat = reshape_cefts(concatenate(eft_v1rs + eft_v2rs + eft_v3rs))
            eft_vec = reshape_df(mrepr_pool(mrepr_conv(eft_mat)))

            return concatenate([eft_vec, m_mft], name=name)

        m1_mrepr = mrepr(m1_efts, m1_mft, name='m1_mrpr')
        m2_mrepr = mrepr(m2_efts, m2_mft, name='m2_mrpr')

    # mention-pair表达的命名空间
    with tf.name_scope('mpair'):
        mpair_conv = Conv2D(nb_fltrs, (1, nb_fltrs + mftdim), activation='tanh')
        reshape_reprs, mpair_pool = Reshape((2, nb_fltrs + mftdim, -1)), MaxPooling2D(pool_size=(2, 1))

        def mpair(mrepr1, mrepr2, pwft, name=None):
            mat = reshape_reprs(concatenate([mrepr1, mrepr2]))
            pft_vec = reshape_df(mpair_pool(mpair_conv(mat)))
            return concatenate([pft_vec, pwft], name=name)

        mm_mpair = mpair(m1_mrepr, m2_mrepr, mm_pft, name='mm_mpair')

    # 预测mention-pair中两个mention关系的命名空间
    with tf.name_scope('preds'):
        mm_hidden = dropout(Dense(nb_fltrs, activation='relu')(mm_mpair))
        mm_probs = Dense(3, activation='softmax', name='mm_probs', kernel_regularizer=l2(0.005))(mm_hidden)

# 构造mention嵌入表达的模型
mrepr_inputs = m2_efts + [m2_mft]
mrepr_model = Model(inputs=mrepr_inputs, outputs=[m2_mrepr], name='mm_mrepr_model')

# 构造mention-parir嵌入表达的模型
mpair_inputs = m1_efts + m2_efts + [m1_mft, m2_mft, mm_pft]
mpair_model = Model(inputs=mpair_inputs, outputs=[mm_mpair], name='mm_mpair_model')

# 构建mention-pair排序得分模型
ranking_inputs = m1_efts + m2_efts + [m1_mft, m2_mft, mm_pft]
ranking_model = Model(inputs=ranking_inputs, outputs=[mm_probs], name='mm_ranking_model')
ranking_model.compile(optimizer=RMSprop(), 
                      loss=['sparse_categorical_crossentropy'], 
                      metrics=['sparse_categorical_accuracy'])
ranking_model.summary()
plot_model(ranking_model, to_file='./model.png')

输出的summary

Model: "mm_ranking_model"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_4 (InputLayer)            (None, 3, 50)        0                                            
__________________________________________________________________________________________________
input_5 (InputLayer)            (None, 8, 50)        0                                            
__________________________________________________________________________________________________
input_6 (InputLayer)            (None, 5, 50)        0                                            
__________________________________________________________________________________________________
input_7 (InputLayer)            (None, 5, 50)        0                                            
__________________________________________________________________________________________________
reshape_2 (Reshape)             (None, 3, 50, 1)     0           input_4[0][0]                    
                                                                 input_8[0][0]                    
__________________________________________________________________________________________________
reshape_3 (Reshape)             (None, 8, 50, 1)     0           input_5[0][0]                    
                                                                 input_9[0][0]                    
__________________________________________________________________________________________________
reshape_4 (Reshape)             (None, 5, 50, 1)     0           input_6[0][0]                    
                                                                 input_10[0][0]                   
__________________________________________________________________________________________________
reshape_5 (Reshape)             (None, 5, 50, 1)     0           input_7[0][0]                    
                                                                 input_11[0][0]                   
__________________________________________________________________________________________________
conv2d_1 (Conv2D)               (None, 3, 1, 280)    14280       reshape_2[0][0]                  
                                                                 reshape_2[1][0]                  
__________________________________________________________________________________________________
conv2d_4 (Conv2D)               (None, 8, 1, 280)    14280       reshape_3[0][0]                  
                                                                 reshape_3[1][0]                  
__________________________________________________________________________________________________
conv2d_7 (Conv2D)               (None, 5, 1, 280)    14280       reshape_4[0][0]                  
                                                                 reshape_4[1][0]                  
__________________________________________________________________________________________________
conv2d_10 (Conv2D)              (None, 5, 1, 280)    14280       reshape_5[0][0]                  
                                                                 reshape_5[1][0]                  
__________________________________________________________________________________________________
conv2d_2 (Conv2D)               (None, 2, 1, 280)    28280       reshape_2[0][0]                  
                                                                 reshape_2[1][0]                  
__________________________________________________________________________________________________
conv2d_5 (Conv2D)               (None, 7, 1, 280)    28280       reshape_3[0][0]                  
                                                                 reshape_3[1][0]                  
__________________________________________________________________________________________________
conv2d_8 (Conv2D)               (None, 4, 1, 280)    28280       reshape_4[0][0]                  
                                                                 reshape_4[1][0]                  
__________________________________________________________________________________________________
conv2d_11 (Conv2D)              (None, 4, 1, 280)    28280       reshape_5[0][0]                  
                                                                 reshape_5[1][0]                  
__________________________________________________________________________________________________
conv2d_3 (Conv2D)               (None, 1, 1, 280)    42280       reshape_2[0][0]                  
                                                                 reshape_2[1][0]                  
__________________________________________________________________________________________________
conv2d_6 (Conv2D)               (None, 6, 1, 280)    42280       reshape_3[0][0]                  
                                                                 reshape_3[1][0]                  
__________________________________________________________________________________________________
conv2d_9 (Conv2D)               (None, 3, 1, 280)    42280       reshape_4[0][0]                  
                                                                 reshape_4[1][0]                  
__________________________________________________________________________________________________
conv2d_12 (Conv2D)              (None, 3, 1, 280)    42280       reshape_5[0][0]                  
                                                                 reshape_5[1][0]                  
__________________________________________________________________________________________________
max_pooling2d_1 (MaxPooling2D)  (None, 1, 1, 280)    0           conv2d_1[0][0]                   
                                                                 conv2d_1[1][0]                   
__________________________________________________________________________________________________
max_pooling2d_4 (MaxPooling2D)  (None, 1, 1, 280)    0           conv2d_4[0][0]                   
                                                                 conv2d_4[1][0]                   
__________________________________________________________________________________________________
max_pooling2d_7 (MaxPooling2D)  (None, 1, 1, 280)    0           conv2d_7[0][0]                   
                                                                 conv2d_7[1][0]                   
__________________________________________________________________________________________________
max_pooling2d_10 (MaxPooling2D) (None, 1, 1, 280)    0           conv2d_10[0][0]                  
                                                                 conv2d_10[1][0]                  
__________________________________________________________________________________________________
max_pooling2d_2 (MaxPooling2D)  (None, 1, 1, 280)    0           conv2d_2[0][0]                   
                                                                 conv2d_2[1][0]                   
__________________________________________________________________________________________________
max_pooling2d_5 (MaxPooling2D)  (None, 1, 1, 280)    0           conv2d_5[0][0]                   
                                                                 conv2d_5[1][0]                   
__________________________________________________________________________________________________
max_pooling2d_8 (MaxPooling2D)  (None, 1, 1, 280)    0           conv2d_8[0][0]                   
                                                                 conv2d_8[1][0]                   
__________________________________________________________________________________________________
max_pooling2d_11 (MaxPooling2D) (None, 1, 1, 280)    0           conv2d_11[0][0]                  
                                                                 conv2d_11[1][0]                  
__________________________________________________________________________________________________
max_pooling2d_3 (MaxPooling2D)  (None, 1, 1, 280)    0           conv2d_3[0][0]                   
                                                                 conv2d_3[1][0]                   
__________________________________________________________________________________________________
max_pooling2d_6 (MaxPooling2D)  (None, 1, 1, 280)    0           conv2d_6[0][0]                   
                                                                 conv2d_6[1][0]                   
__________________________________________________________________________________________________
max_pooling2d_9 (MaxPooling2D)  (None, 1, 1, 280)    0           conv2d_9[0][0]                   
                                                                 conv2d_9[1][0]                   
__________________________________________________________________________________________________
max_pooling2d_12 (MaxPooling2D) (None, 1, 1, 280)    0           conv2d_12[0][0]                  
                                                                 conv2d_12[1][0]                  
__________________________________________________________________________________________________
reshape_1 (Reshape)             (None, 280)          0           max_pooling2d_1[0][0]            
                                                                 max_pooling2d_2[0][0]            
                                                                 max_pooling2d_3[0][0]            
                                                                 max_pooling2d_4[0][0]            
                                                                 max_pooling2d_5[0][0]            
                                                                 max_pooling2d_6[0][0]            
                                                                 max_pooling2d_7[0][0]            
                                                                 max_pooling2d_8[0][0]            
                                                                 max_pooling2d_9[0][0]            
                                                                 max_pooling2d_10[0][0]           
                                                                 max_pooling2d_11[0][0]           
                                                                 max_pooling2d_12[0][0]           
                                                                 max_pooling2d_13[0][0]           
                                                                 max_pooling2d_1[1][0]            
                                                                 max_pooling2d_2[1][0]            
                                                                 max_pooling2d_3[1][0]            
                                                                 max_pooling2d_4[1][0]            
                                                                 max_pooling2d_5[1][0]            
                                                                 max_pooling2d_6[1][0]            
                                                                 max_pooling2d_7[1][0]            
                                                                 max_pooling2d_8[1][0]            
                                                                 max_pooling2d_9[1][0]            
                                                                 max_pooling2d_10[1][0]           
                                                                 max_pooling2d_11[1][0]           
                                                                 max_pooling2d_12[1][0]           
                                                                 max_pooling2d_13[1][0]           
                                                                 max_pooling2d_14[0][0]           
__________________________________________________________________________________________________
dropout_1 (Dropout)             (None, 280)          0           reshape_1[0][0]                  
                                                                 reshape_1[1][0]                  
                                                                 reshape_1[2][0]                  
                                                                 reshape_1[3][0]                  
                                                                 reshape_1[4][0]                  
                                                                 reshape_1[5][0]                  
                                                                 reshape_1[6][0]                  
                                                                 reshape_1[7][0]                  
                                                                 reshape_1[8][0]                  
                                                                 reshape_1[9][0]                  
                                                                 reshape_1[10][0]                 
                                                                 reshape_1[11][0]                 
                                                                 reshape_1[13][0]                 
                                                                 reshape_1[14][0]                 
                                                                 reshape_1[15][0]                 
                                                                 reshape_1[16][0]                 
                                                                 reshape_1[17][0]                 
                                                                 reshape_1[18][0]                 
                                                                 reshape_1[19][0]                 
                                                                 reshape_1[20][0]                 
                                                                 reshape_1[21][0]                 
                                                                 reshape_1[22][0]                 
                                                                 reshape_1[23][0]                 
                                                                 reshape_1[24][0]                 
                                                                 dense_1[0][0]                    
__________________________________________________________________________________________________
concatenate_1 (Concatenate)     (None, 3360)         0           dropout_1[0][0]                  
                                                                 dropout_1[3][0]                  
                                                                 dropout_1[6][0]                  
                                                                 dropout_1[9][0]                  
                                                                 dropout_1[1][0]                  
                                                                 dropout_1[4][0]                  
                                                                 dropout_1[7][0]                  
                                                                 dropout_1[10][0]                 
                                                                 dropout_1[2][0]                  
                                                                 dropout_1[5][0]                  
                                                                 dropout_1[8][0]                  
                                                                 dropout_1[11][0]                 
__________________________________________________________________________________________________
input_8 (InputLayer)            (None, 3, 50)        0                                            
__________________________________________________________________________________________________
input_9 (InputLayer)            (None, 8, 50)        0                                            
__________________________________________________________________________________________________
input_10 (InputLayer)           (None, 5, 50)        0                                            
__________________________________________________________________________________________________
input_11 (InputLayer)           (None, 5, 50)        0                                            
__________________________________________________________________________________________________
reshape_6 (Reshape)             (None, 12, 280, 1)   0           concatenate_1[0][0]              
                                                                 concatenate_2[0][0]              
__________________________________________________________________________________________________
conv2d_13 (Conv2D)              (None, 12, 1, 280)   78680       reshape_6[0][0]                  
                                                                 reshape_6[1][0]                  
__________________________________________________________________________________________________
max_pooling2d_13 (MaxPooling2D) (None, 1, 1, 280)    0           conv2d_13[0][0]                  
                                                                 conv2d_13[1][0]                  
__________________________________________________________________________________________________
concatenate_2 (Concatenate)     (None, 3360)         0           dropout_1[12][0]                 
                                                                 dropout_1[15][0]                 
                                                                 dropout_1[18][0]                 
                                                                 dropout_1[21][0]                 
                                                                 dropout_1[13][0]                 
                                                                 dropout_1[16][0]                 
                                                                 dropout_1[19][0]                 
                                                                 dropout_1[22][0]                 
                                                                 dropout_1[14][0]                 
                                                                 dropout_1[17][0]                 
                                                                 dropout_1[20][0]                 
                                                                 dropout_1[23][0]                 
__________________________________________________________________________________________________
input_2 (InputLayer)            (None, 72)           0                                            
__________________________________________________________________________________________________
input_3 (InputLayer)            (None, 72)           0                                            
__________________________________________________________________________________________________
m1_mrpr (Concatenate)           (None, 352)          0           reshape_1[12][0]                 
                                                                 input_2[0][0]                    
__________________________________________________________________________________________________
m2_mrpr (Concatenate)           (None, 352)          0           reshape_1[25][0]                 
                                                                 input_3[0][0]                    
__________________________________________________________________________________________________
concatenate_3 (Concatenate)     (None, 704)          0           m1_mrpr[0][0]                    
                                                                 m2_mrpr[0][0]                    
__________________________________________________________________________________________________
reshape_7 (Reshape)             (None, 2, 352, 1)    0           concatenate_3[0][0]              
__________________________________________________________________________________________________
conv2d_14 (Conv2D)              (None, 2, 1, 280)    98840       reshape_7[0][0]                  
__________________________________________________________________________________________________
max_pooling2d_14 (MaxPooling2D) (None, 1, 1, 280)    0           conv2d_14[0][0]                  
__________________________________________________________________________________________________
input_1 (InputLayer)            (None, 6)            0                                            
__________________________________________________________________________________________________
mm_mpair (Concatenate)          (None, 286)          0           reshape_1[26][0]                 
                                                                 input_1[0][0]                    
__________________________________________________________________________________________________
dense_1 (Dense)                 (None, 280)          80360       mm_mpair[0][0]                   
__________________________________________________________________________________________________
mm_probs (Dense)                (None, 3)            843         dropout_1[24][0]                 
==================================================================================================
Total params: 598,083
Trainable params: 598,083
Non-trainable params: 0
__________________________________________________________________________________________________

模型图

042f726f97befddb92e7c4fc439bdeb5.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值