• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

python 搞代码 4年前 (2022-01-07) 17次浏览 已收录 0个评论

这篇文章主要介绍了查看keras各种网络结构各层的名字方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

举例

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

得到这个结果

补充知识:使用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 = Inpu<div style="color:transparent">来源gaodai.ma#com搞#代!码网</div>t(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

解决办法:

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

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

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

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

以上就是查看keras各种网络结构各层的名字方式的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:查看keras各种网络结构各层的名字方式

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址