Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用保存的tensorflow模型加载和预测?_Python_Tensorflow_Keras_Deep Learning_Nlp - Fatal编程技术网

Python 如何使用保存的tensorflow模型加载和预测?

Python 如何使用保存的tensorflow模型加载和预测?,python,tensorflow,keras,deep-learning,nlp,Python,Tensorflow,Keras,Deep Learning,Nlp,我正在从以下回购协议运行一个相当定制的tensorflow模型: #初始化会话 sess=tf.Session() ##从数据帧中的目录加载所有文件。 #def加载目录数据(目录): #数据={} #数据[“句子”]=[] #数据[“情绪”]=[] #对于os.listdir(目录)中的文件路径: #使用tf.gfile.gfile(os.path.join(目录,文件路径),“r”)作为f: #数据[“句子”]。追加(f.read()) #数据[“情绪”].append(重新匹配(“\d+

我正在从以下回购协议运行一个相当定制的tensorflow模型:

#初始化会话
sess=tf.Session()
##从数据帧中的目录加载所有文件。
#def加载目录数据(目录):
#数据={}
#数据[“句子”]=[]
#数据[“情绪”]=[]
#对于os.listdir(目录)中的文件路径:
#使用tf.gfile.gfile(os.path.join(目录,文件路径),“r”)作为f:
#数据[“句子”]。追加(f.read())
#数据[“情绪”].append(重新匹配(“\d+\d+\.txt”,文件路径).group(1))
#从目录(数据)返回pd.DataFrame
##合并正面和负面示例,添加极性列并混洗。
#def load_数据集(目录):
#pos\u df=加载目录数据(os.path.join(目录,“pos”))
#neg_df=load_目录_数据(os.path.join(目录,“neg”))
#pos_df[“极性”]=1
#负向df[“极性”]=0
#返回pd.concat([pos_df,neg_df])样本(frac=1)。重置索引(drop=True)
##下载并处理数据集文件。
#def下载和加载数据集(强制下载=错误):
#dataset=tf.keras.utils.get\u文件(
#fname=“aclImdb.tar.gz”,
#原点=”http://ai.stanford.edu/~amaas/data/emotional/aclImdb_v1.tar.gz“,
#摘录=真,
#     )
#train\u df=load\u数据集(os.path.join(os.path.dirname(数据集),“aclImdb”,“train”))
#test\u df=load\u数据集(os.path.join(os.path.dirname(数据集),“aclImdb”,“test”))
#返回列车_-df,测试_-df
类PaddingInputExample(对象):
“”“伪示例,因此num输入示例是批大小的倍数。
在TPU上运行eval/predict时,我们需要填充示例的数量
是批次大小的倍数,因为TPU需要固定批次
另一种选择是放弃最后一批,这是不好的,因为这意味着
不会生成整个输出数据。
我们使用这个类而不是'None',因为将'None'视为填充
战斗可能会导致无声的错误。
"""
类InputExample(对象):
“”“简单序列分类的单个培训/测试示例。”“”
def_uuuinit_uuuu(self,guid,text_a,text_b=None,label=None):
“”“构造一个InputExample。
Args:
guid:示例的唯一id。
text_a:string。第一个序列的未排序文本。对于单个
序列任务,仅必须指定此序列。
text_b:(可选)字符串。第二个序列的未排序文本。
仅必须为序列对任务指定。
标签:(可选)字符串。示例的标签。这应该是
指定用于列车和开发示例,但不用于测试示例。
"""
self.guid=guid
self.text\u a=text\u a
self.text\u b=文本
self.label=标签
def从_中心_模块(bert_路径)创建_标记器_:
“”“从集线器模块获取vocab文件和大小写信息。”“”
bert_模块=hub.module(bert_路径)
标记化\u info=bert\u模块(signature=“标记化\u info”,as\u dict=True)
vocab_文件,do_lower_case=sess.run(
[tokenization_info[“vocab_文件”]、tokenization_info[“do_小写”]]
)
返回FullTokenizer(vocab_文件=vocab_文件,do_小写=do_小写)
def convert_single_示例(标记器,示例,最大长度=256):
“”“将单个`InputExample`转换为单个`InputFeatures`.”“”
如果isinstance(例如,PaddingInputExample):
输入标识=[0]*最大顺序长度
输入掩码=[0]*最大顺序长度
段ID=[0]*最大顺序长度
标签=0
返回输入标识、输入掩码、段标识、标签
tokens\u a=tokenizer.tokenize(例如.text\u a)
如果len(令牌a)>max_seq_length-2:
令牌\u a=令牌\u a[0:(最大长度-2)]
代币=[]
段_id=[]
标记。追加(“[CLS]”)
段ID.append(0)
对于令牌a中的令牌:
tokens.append(标记)
段ID.append(0)
标记。附加(“[SEP]”)
段ID.append(0)
输入\u id=tokenizer。将\u令牌\u转换为\u id(令牌)
#掩码有1表示实令牌,0表示填充令牌。只有真实的
#代币被处理。
输入\u掩码=[1]*len(输入\u ID)
#零填充到序列长度。
而len(输入ID)load_model(...., custom_objects={'BertLayer':BertLayer})