【Bugs】Keras AttributeError ‘NoneType‘ object has no attribute ‘_inbound_nodes‘报错

【Bugs】Keras AttributeError: ‘NoneType’ object has no attribute '_inbound_nodes’报错

问题说明

很多原因可能会出现这种问题。

出错代码如下:

import keras.backend as K
def CNN_clf():
    title_input = Input(shape=(title_maxlen,), name='title_input')
    content_input = Input(shape=(content_maxlen,), name='content_input')
    title_emb = Embedding()(title_input)
    content_emb = Embedding()(content_input)
    emb = K.concatenate([title_emb,K_weights*content_emb],axis=1) 
    feature_maps = []
    for fs in filter_sizes:
        cnn = Conv1D(num_filters, fs, padding='valid', strides=1, activation='relu')(emb)
        maxpool = MaxPooling1D()(cnn)
        feature_maps.append(maxpool)
    feature_all = Concatenate()(feature_maps)
    flat = Flatten()(feature_all)
    droped_flat = Dropout(0.5)(flat)
    output = Dense(num_classes, activation='sigmoid')(droped_flat)
    m = Model(inputs=[title_input,content_input], outputs=output) ##报错行

报错如下:

Traceback (most recent call last):
  File "run.py", line 58, in <module>
    threshold, K_weights, label_names, num_filters, filter_sizes, num_classes, batch_size=batch_size,epochs=epoch)
  File "F:\PA_business_clf\clf_merge.py", line 59, in CNN_merge_classify
    m = Model(inputs=[title_input,content_input], outputs=output)
  File "D:\anaconda3\envs\tf15\lib\site-packages\keras\legacy\interfaces.py", line 91, in wrapper
    return func(*args, **kwargs)
  File "D:\anaconda3\envs\tf15\lib\site-packages\keras\engine\network.py", line 94, in __init__
    self._init_graph_network(*args, **kwargs)
  File "D:\anaconda3\envs\tf15\lib\site-packages\keras\engine\network.py", line 241, in _init_graph_network
    self.inputs, self.outputs)
  File "D:\anaconda3\envs\tf15\lib\site-packages\keras\engine\network.py", line 1434, in _map_graph_network
    tensor_index=tensor_index)
  File "D:\anaconda3\envs\tf15\lib\site-packages\keras\engine\network.py", line 1421, in build_map
    node_index, tensor_index)
  File "D:\anaconda3\envs\tf15\lib\site-packages\keras\engine\network.py", line 1421, in build_map
    node_index, tensor_index)
  File "D:\anaconda3\envs\tf15\lib\site-packages\keras\engine\network.py", line 1421, in build_map
    node_index, tensor_index)
  [Previous line repeated 3 more times]
  File "D:\anaconda3\envs\tf15\lib\site-packages\keras\engine\network.py", line 1393, in build_map
    node = layer._inbound_nodes[node_index]
AttributeError: 'NoneType' object has no attribute '_inbound_nodes'

错误原因

此代码主要采用了Keras Function API风格,主要使用了concatenate的方法。但是是从keras.backend中引入的函数而没有作为一个,所以要从keras.layers中引用函数将拼接操作作为一个layer

解决方法

from keras.backend import Concatenate
def CNN_merge_classify():
    title_input = Input(shape=(title_maxlen,), name='title_input')
    content_input = Input(shape=(content_maxlen,), name='content_input')
    title_emb = Embedding()(title_input)
    content_emb = Embedding()(content_input)
    content_emb = Lambda(lambda x:x*K_weights)(content_emb)
    emb = Concatenate(axis=1)([title_emb,content_emb])
    feature_maps = []
    for fs in filter_sizes:
        cnn = Conv1D(num_filters, fs, padding='valid', strides=1, activation='relu')(emb)
        maxpool = MaxPooling1D()(cnn)
        feature_maps.append(maxpool)
    feature_all = Concatenate()(feature_maps)
    flat = Flatten()(feature_all)
    droped_flat = Dropout(0.5)(flat)
    output = Dense(num_classes, activation='sigmoid')(droped_flat)

    m = Model(inputs=[title_input,content_input], outputs=output)

至此,运行无Bugs。

类似的错误都可以如此解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值