查看keras各种网络结构各层的名字方式

查看keras各种网络结构各层的名字方式

更多python视频教程请到菜鸟教程https://www.piaodoo.com/

举例

base_model = ResNet50(weights=‘imagenet', include_top=True)
print(base_model.summary())

得到这个结果

查看keras各种网络结构各层的名字方式_第1张图片

补充知识:使用keras,在load_model()时,出现NameError: name '***' is not defined

是因为在构造模型是,使用了自定义的层,如Lambda()

# 文本相似度评估方式
def exponent_neg_manhattan_distance(sent_left, sent_middle, sent_right):
  '''基于曼哈顿空间距离计算两个字符串语义空间表示相似度计算'''
  return ((K.exp(-K.sum(K.abs(sent_left - sent_middle), axis=1, keepdims=True)) - K.exp(-K.sum(K.abs(sent_left - sent_right), axis=1, keepdims=True))) + 1) / 2

def bilstm_siamese_model():
‘’‘搭建孪生网络’’’
#可以在这里调参
embedding_layer = Embedding(VOCAB_SIZE + 1,
EMBEDDING_DIM,
weights=[embedding_matrix],
input_length=MAX_LENGTH,
trainable=True, #原本为False
mask_zero=True)
#输入层
left_input = Input(shape=(MAX_LENGTH,), dtype=‘float32’, name=“left_x”) #(?, 25)
middle_input = Input(shape=(MAX_LENGTH,), dtype=‘float32’, name=“middle_x”) #(?, 25)
right_input = Input(shape=(MAX_LENGTH,), dtype=‘float32’, name=‘right_x’)
#嵌入层
encoded_left = embedding_layer(left_input) #(?, 25, 300)
encoded_middle = embedding_layer(middle_input) #(?, 25, 300)
encoded_right = embedding_layer(right_input)

print(encoded_left)

#孪生网络
shared_lstm = create_base_network(input_shape=(MAX_LENGTH, EMBEDDING_DIM))
left_output = shared_lstm(encoded_left)
middle_output = shared_lstm(encoded_middle)
right_output = shared_lstm(encoded_right)

文本相似度评估方式

distance = Lambda(lambda x: exponent_neg_manhattan_distance(x[0], x[1], x[2]),output_shape=lambda x: (x[0][0], 1))([left_output, middle_output, right_output]) #第二个lambda函数的输入参数不清楚,x[0][0]
print(‘distance’,distance)
model = Model([left_input, middle_input, right_input], distance)
model.compile(loss=‘binary_crossentropy’,
optimizer=‘nadam’,
metrics=[‘accuracy’])
model.summary()
return model

虽然之前已经定义好了exponent_neg_manhattan_distance(),但是在load_model()依然会报NameError: name 'exponent_neg_manhattan_distance' is not defined

解决办法:

查看keras各种网络结构各层的名字方式_第2张图片

在load_model的时候,加一个custom_objects参数就可以了,即

model = load_model(model_path,custom_objects={'exponent_neg_manhattan_distance': exponent_neg_manhattan_distance}) #对自定义层一定要说明

注:用Google搜bug比用baidu搜质量会高不少。

以上这篇查看keras各种网络结构各层的名字方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多

茂名论坛https://www.hnthzk.com/

化州橘红http://www.sfkyty.com/

茂名论坛http://www.nrso.net/

源码搜藏网http://www.cntkd.net/

茂名市高级技工学校(茂名一技)http://www.szsyby.net/

茂名一技https://www.mmbbu.com/

你可能感兴趣的:(查看keras各种网络结构各层的名字方式)