'NoneType' object has no attribute '_inbound_nodes' error

。_饼干妹妹 提交于 2020-05-30 08:03:17

问题


I have to take the output of last conv layer of EfficientNet and then calculate H = wT*x+b. My w is [49,49]. After that I have to apply softmax on H and then do elementwise multiplication Xì = Hi*Xi. This is my code:

common_input = layers.Input(shape=(224, 224, 3))    
x=model0(common_input) #model0 terminate with last conv layer of EfficientNet (7,7,1280)
x = layers.BatchNormalization()(x)

W = tf.Variable(tf.random_normal([49,49], seed=0), name='weight')
b = tf.Variable(tf.random_normal([49], seed=0), name='bias')

x = tf.reshape(x, [-1, 7*7,1280])
H = tf.matmul(W, x,transpose_a=True)
H = tf.nn.softmax(H)
#print(H.shape) (?,49,1280)
#print(x.shape) (?,49,1280)

x=tf.multiply(H, x)

p=layers.Dense(768, activation="relu")(x)
p=layers.Dense(8, activation="softmax", name="fc_out")(p)

model = Model(inputs=common_input, outputs=p)

But I got this error: 'NoneType' object has no attribute '_inbound_nodes'

<ipython-input-12-6ce3217f045c> in build_model()
     35     p=layers.Dense(8, activation="softmax", name="fc_out")(p)
     36 
---> 37     model = Model(inputs=common_input, outputs=p)
     38 
     39     return model

AttributeError: 'NoneType' object has no attribute '_inbound_nodes'

回答1:


I have replaced the operations with a Lambda layer in the following code. Please excuse my shabby naming. Give this code a try.

W = tf.Variable(tf.random_normal([49,49], seed=0), name='weight')
b = tf.Variable(tf.random_normal([49], seed=0), name='bias')

def all_operations(args):
    x = args[0]
    H = args[1]
    x = tf.reshape(x, [-1, 7*7,1280])
    H = tf.matmul(W, x, transpose_a=True)
    H = tf.nn.softmax(H)
    x = tf.multiply(H, x)
    x = tf.reshape(x, [-1, 49*1280])
    return x

common_input = layers.Input(shape=(224, 224, 3))    
x=model0(common_input) #model0 terminate with last conv layer of EfficientNet (7,7,1280)
x = layers.BatchNormalization()(x)

x = Lambda(all_operations)([x, H])

p=layers.Dense(768, activation="relu")(x)
p=layers.Dense(8, activation="softmax", name="fc_out")(p)

model = Model(inputs=common_input, outputs=p)


来源:https://stackoverflow.com/questions/61725611/nonetype-object-has-no-attribute-inbound-nodes-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!