激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - 解決Keras 中加入lambda層無法正常載入模型問題

解決Keras 中加入lambda層無法正常載入模型問題

2020-06-17 10:56機(jī)器玄學(xué)實(shí)踐者 Python

這篇文章主要介紹了解決Keras 中加入lambda層無法正常載入模型問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

剛剛解決了這個(gè)問題,現(xiàn)在記錄下來

問題描述

當(dāng)使用lambda層加入自定義的函數(shù)后,訓(xùn)練沒有bug,載入保存模型則顯示Nonetype has no attribute 'get'

問題解決方法:

這個(gè)問題是由于缺少config信息導(dǎo)致的。lambda層在載入的時(shí)候需要一個(gè)函數(shù),當(dāng)使用自定義函數(shù)時(shí),模型無法找到這個(gè)函數(shù),也就構(gòu)建不了。

m = load_model(path,custom_objects={"reduce_mean":self.reduce_mean,"slice":self.slice})

其中,reduce_mean 和slice定義如下

?
1
2
3
4
5
6
def slice(self,x, turn):
  """ Define a tensor slice function
  """
  return x[:, turn, :, :]
def reduce_mean(self, X):
  return K.mean(X, axis=-1)

補(bǔ)充知識(shí):含有Lambda自定義層keras模型,保存遇到的問題及解決方案

一,許多應(yīng)用,keras含有的層已經(jīng)不能滿足要求,需要透過Lambda自定義層來實(shí)現(xiàn)一些layer,這個(gè)情況下,只能保存模型的權(quán)重,無法使用model.save來保存模型。

保存時(shí)會(huì)報(bào)

TypeError: can't pickle _thread.RLock objects

二,解決方案,為了便于后續(xù)的部署,可以轉(zhuǎn)成tensorflow的PB進(jìn)行部署。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from keras.models import load_model
import tensorflow as tf
import os, sys
from keras import backend as K
from tensorflow.python.framework import graph_util, graph_io
 
def h5_to_pb(h5_weight_path, output_dir, out_prefix="output_", log_tensorboard=True):
  if not os.path.exists(output_dir):
    os.mkdir(output_dir)
  h5_model = build_model()
  h5_model.load_weights(h5_weight_path)
  out_nodes = []
  for i in range(len(h5_model.outputs)):
    out_nodes.append(out_prefix + str(i + 1))
    tf.identity(h5_model.output[i], out_prefix + str(i + 1))
  model_name = os.path.splitext(os.path.split(h5_weight_path)[-1])[0] + '.pb'
  sess = K.get_session()
  init_graph = sess.graph.as_graph_def()
  main_graph = graph_util.convert_variables_to_constants(sess, init_graph, out_nodes)
  graph_io.write_graph(main_graph, output_dir, name=model_name, as_text=False)
  if log_tensorboard:
    from tensorflow.python.tools import import_pb_to_tensorboard
    import_pb_to_tensorboard.import_to_tensorboard(os.path.join(output_dir, model_name), output_dir)
 
def build_model():
  inputs = Input(shape=(784,), name='input_img')
  x = Dense(64, activation='relu')(inputs)
  x = Dense(64, activation='relu')(x)
  y = Dense(10, activation='softmax')(x)
  h5_model = Model(inputs=inputs, outputs=y)
  return h5_model
 
if __name__ == '__main__':
  if len(sys.argv) == 3:
    # usage: python3 h5_to_pb.py h5_weight_path output_dir
    h5_to_pb(h5_weight_path=sys.argv[1], output_dir=sys.argv[2])

以上這篇解決Keras 中加入lambda層無法正常載入模型問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/weixin_39673686/article/details/90697587

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费午夜视频在线观看 | 欧美爱爱视频网站 | 中国国语毛片免费观看视频 | 午夜精品久久久久久久99热浪潮 | 一级黄色国产视频 | a级黄色片视频 | 成人三级电影在线 | 少妇色诱麻豆色哟哟 | 成年人在线视频免费 | 中文字幕线观看 | 免费黄色成人 | 久久久www视频| 欧美黄成人免费网站大全 | 精品亚洲一区二区三区 | 欧美一级淫片免费播放口 | 久久噜噜噜精品国产亚洲综合 | 亚洲第一页视频 | 久操福利视频 | 91精品国产日韩91久久久久久360 | 日本中文字幕电影在线观看 | 日本黄色一级电影 | 国产五区 | 91香蕉影视| 亚洲欧美国产高清 | 羞羞视频免费网站含羞草 | 日韩美女电影 | 日韩aⅴ一区二区三区 | 污黄视频在线观看 | 欧美国产一区二区三区 | 337p日本欧洲亚洲大胆精蜜臀 | 51国产偷自视频区视频小蝌蚪 | 免费观看又色又爽又黄的崩锅 | 国产系列 视频二区 | 久久国产精品久久久久久久久久 | www.99热视频| 成年片黄色日本大片网站视频 | 国产a级网站 | 污片视频网站 | 国产一级在线观看视频 | 91色爱| 欧美a∨亚洲欧美亚洲 |