Python 尝试使用tensorflow.keras.models.save_model保存模型时出现问题

Python 尝试使用tensorflow.keras.models.save_model保存模型时出现问题,python,tensorflow,keras,data-science,Python,Tensorflow,Keras,Data Science,我有一个角色级别的CNN模型。我能够以H5格式保存,但我需要以保存的模型包格式部署模型。代码如下: 重新导入 作为pd进口熊猫 将numpy作为np导入 导入sklearn 从sklearn.naive_bayes导入多项式nb 从sklearn.linear_模型导入逻辑回归 从sklearn.metrics导入准确度、混乱度矩阵 导入tensorflow.python.keras.saving.saving_模型 #预处理 导入nltk 从nltk.tokenize导入发送\u token

我有一个角色级别的CNN模型。我能够以H5格式保存,但我需要以保存的模型包格式部署模型。代码如下:

重新导入
作为pd进口熊猫
将numpy作为np导入
导入sklearn
从sklearn.naive_bayes导入多项式nb
从sklearn.linear_模型导入逻辑回归
从sklearn.metrics导入准确度、混乱度矩阵
导入tensorflow.python.keras.saving.saving_模型
#预处理
导入nltk
从nltk.tokenize导入发送\u tokenize
#造型
进口干酪
从tensorflow.keras.models导入模型,加载模型
从tensorflow.keras.layers导入稠密、输入、辍学、MaxPoolg1d、Conv1D、GlobalMapool1d、双向、展平
从tensorflow.keras.layers导入LSTM、Lambda、双向、连接、批处理规范化、嵌入
从tensorflow.keras.layers导入时间分布
从tensorflow.python.keras.optimizers导入Adam
导入tensorflow作为tf
将keras.backend作为K导入
进口伊皮顿
从IPython.display导入SVG
从tensorflow.keras.utils导入模型到
从sklearn.model\u选择导入列车\u测试\u拆分
保存路径=“保存的路径”
def get_raw_data():
#获取文件
df=pd.read\u csv(
“数据路径”,
sep=',',
名称=[“原始命令”,“标签”]
)
dropna(0,子集=[“原始命令”],inplace=True)
#标签
返回df[['label','raw command']]
df=获取原始数据()
df.head()
打印('数据点数:%d'(len(df)))
列车测向,测试测向=列车测向分割(测向,测试测向尺寸=0.3)
课程名称:
CHAR_DICT='abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyzo123456789.!?:,\'%-\(\)/$+{}`~=_|&;[]^@#&*"'
定义初始值(self,句子的最大长度,设置的最大数量,详细=10):
self.max_len_of_句子=80
self.max\u num\u of\u setnence=1
self.verbose=verbose
self.num\u of\u char=0
self.num\u of_标签=0
self.unknown_标签=“”
def build_char_dictionary(self,char_dict=None,unknown_label='UNK'):
"""
定义possbile字符集。如果此集合中不存在字符,则使用“UNK”
"""
如果char_dict为None:
char\u dict=self.char\u dict
self.unknown\u label=未知\u label
字符=[]
对于字符中的c:
附加字符(c)
字符=列表(集合(字符))
字符插入(0,未知\u标签)
self.num\u of\u char=len(chars)
self.char_index=dict((c,i)表示枚举中的i,c(chars))
self.index_char=dict((i,c)表示枚举中的i,c(chars))
如果self.verbose>5:
打印('字符总数:',self.num\u/u字符)
print('First 3 char_index sample:',{k:self.char_index[k]表示列表中的k(self.char_index)[:3]})
print('First 3 index_char sample:',{k:self.index_char[k]表示列表中的k(self.index_char)[:3]})
返回self.char\u索引、self.index\u char、self.num\u of\u char
def convert_标签(自我、标签):
"""
将标签转换为数字
"""
self.label2indexes=dict((l,i)表示枚举(标签)中的i,l)
self.index2labels=dict((i,l)表示枚举(标签)中的i,l)
如果self.verbose>5:
打印('标签到索引:',self.label2索引)
打印('Index to Label:',self.index2labels)
self.num\u of_label=len(self.label2索引)
返回self.label2索引,self.index2标签
定义转换原始数据(自身、df、x列、y列、Label2索引=无,样本大小=无):
"""
#####将原始数据转换为列表
"""
x=[]
y=[]
实际最大句子=0
如果样本大小为“无”:
样本大小=长度(df)
对于i,df.head中的行(样本大小).ItErrors():
x_数据=行[x_列]
y_数据=行[y_列]
打印(x_数据)
打印(y_数据)
句子=已发送\u标记化(x\u数据)
x、 附加(句子)
如果len(句子)>实际最大句子:
实际最大句子=len(句子)
y、 追加(Label2索引[y_数据])
如果self.verbose>5:
打印('新闻数量:%d'(len(x)))
打印('实际最大句子数:%d''实际最大句子数)
返回x,y
定义转换训练数据(self、x\u raw、y\u raw、句子的最大长度=无、设置的最大长度=无):
"""
#####将预处理的数据转换为numpy
"""
未知值=self.char\u索引[self.unknown\u标签]
x=np.one((len(x_raw),最大设置数,最大句子长度),dtype=np.int64)*未知值
y=np.数组(y_原始)
如果句子的最大长度为无:
句子的最大长度=self.max\u len\u
如果设置的最大数量为无:
最大设置数=自。最大设置数
对于i,枚举中的doc(x_原始):
对于j,枚举(doc)中的句子:
如果j<设置的最大数量:
对于t,枚举中的字符(句子[-max\u len\u of\u句子:]):
如果字符不在self.char\u索引中:
x[i,j,(句子的最大长度-1-t)]=self.char索引['UNK']
其他:
x[i,j,(句子的最大长度-1-t)]=self.char\u索引[char]
返回x,y
def_build_character_block(self,block,dropout=0.3,filters=[64100],kernel_size=[3,3],
池大小=[2,2],padding='valid',activation='relu',
内核\u初始化器='glorot\u normal'):
对于范围内的i(len(过滤器)):
块=Conv1D(
过滤器=过滤器[i],内核大小=内核大小[i],
padding=padding,activation=activation,kernel\u initializer=kernel\u initializer)(块)
块=辍学(辍学)(块)
block=maxpoolg1d(池大小=po