- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Tensorflow 上训练了 LSTM RNN 分类模型。我正在保存和恢复检查点以重新训练并使用模型进行测试。现在我想使用 Tensorflow 服务,以便我可以在生产中使用该模型。
最初,我会解析语料库来创建字典,然后使用该字典将字符串中的单词映射到整数。然后,我会将这个字典存储在一个 pickle 文件中,该文件可以在恢复检查点并在数据集上重新训练时重新加载,或者只是为了使用模型以使映射保持一致。使用 SavedModelBuilder 保存模型时如何存储此字典?
我的神经网络代码如下。保存模型的代码即将结束(我包括上下文的整个结构的概述):
...
# Read files and store them in variables
with open('./someReview.txt', 'r') as f:
reviews = f.read()
with open('./someLabels.txt', 'r') as f:
labels = f.read()
...
#Pre-processing functions
#Parse through dataset and create a vocabulary
vocab_to_int, reviews = RnnPreprocessing.map_vocab_to_int(reviews)
with open(pickle_path, 'wb') as handle:
pickle.dump(vocab_to_int, handle, protocol=pickle.HIGHEST_PROTOCOL)
#More preprocessing functions
...
# Building the graph
lstm_size = 256
lstm_layers = 2
batch_size = 1000
learning_rate = 0.01
n_words = len(vocab_to_int) + 1
# Create the graph object
tf.reset_default_graph()
with tf.name_scope('inputs'):
inputs_ = tf.placeholder(tf.int32, [None, None], name="inputs")
labels_ = tf.placeholder(tf.int32, [None, None], name="labels")
keep_prob = tf.placeholder(tf.float32, name="keep_prob")
#Create embedding layer LSTM cell, LSTM Layers
...
# Forward pass
with tf.name_scope("RNN_forward"):
outputs, final_state = tf.nn.dynamic_rnn(cell, embed, initial_state=initial_state)
# Output. We are only interested in the latest output of the lstm cell
with tf.name_scope('predictions'):
predictions = tf.contrib.layers.fully_connected(outputs[:, -1], 1, activation_fn=tf.sigmoid)
tf.summary.histogram('predictions', predictions)
#More functions for cost, accuracy, optimizer initialization
...
# Training
epochs = 1
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
iteration = 1
for e in range(epochs):
state = sess.run(initial_state)
for ii, (x, y) in enumerate(get_batches(train_x, train_y, batch_size), 1):
feed = {inputs_: x,
labels_: y[:, None],
keep_prob: 0.5,
initial_state: state}
summary, loss, state, _ = sess.run([merged, cost, final_state, optimizer], feed_dict=feed)
train_writer.add_summary(summary, iteration)
if iteration%1==0:
print("Epoch: {}/{}".format(e, epochs),
"Iteration: {}".format(iteration),
"Train loss: {:.3f}".format(loss))
if iteration%2==0:
val_acc = []
val_state = sess.run(cell.zero_state(batch_size, tf.float32))
for x, y in get_batches(val_x, val_y, batch_size):
feed = {inputs_: x,
labels_: y[:, None],
keep_prob: 1,
initial_state: val_state}
summary, batch_acc, val_state = sess.run([merged, accuracy, final_state], feed_dict=feed)
val_acc.append(batch_acc)
print("Val acc: {:.3f}".format(np.mean(val_acc)))
iteration +=1
test_writer.add_summary(summary, iteration)
#Saving the model
export_path = './SavedModel'
print ('Exporting trained model to %s'%(export_path))
builder = saved_model_builder.SavedModelBuilder(export_path)
# Build the signature_def_map.
classification_inputs = utils.build_tensor_info(inputs_)
classification_outputs_classes = utils.build_tensor_info(labels_)
classification_signature = signature_def_utils.build_signature_def(
inputs={signature_constants.CLASSIFY_INPUTS: classification_inputs},
outputs={
signature_constants.CLASSIFY_OUTPUT_CLASSES:
classification_outputs_classes,
},
method_name=signature_constants.CLASSIFY_METHOD_NAME)
legacy_init_op = tf.group(
tf.tables_initializer(), name='legacy_init_op')
#add the sigs to the servable
builder.add_meta_graph_and_variables(
sess, [tag_constants.SERVING],
signature_def_map={
signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY:
classification_signature
},
legacy_init_op=legacy_init_op)
print ("added meta graph and variables")
#save it!
builder.save()
print("model saved")
我不完全确定这是否是保存此类模型的正确方法,但这是我在文档和在线教程中找到的唯一实现。
我在文档中没有找到任何示例或任何明确的指南来保存字典或如何在恢复保存的模型时使用它。
使用检查点时,我只需在运行 session 之前加载 pickle 文件。如何恢复这个保存的模型,以便我可以使用字典使用相同的单词到 int 映射?我应该有什么特定的方法来保存或加载模型吗?
我还添加了inputs_作为输入签名的输入。这是单词被映射后的整数序列。我无法指定字符串作为输入,因为我收到 AttributeError: 'str' object has no attribute 'dtype'
。在这种情况下,单词到底是如何映射到生产模型中的整数的?
最佳答案
使用tf.feature_column
中的实用程序实现预处理,并且在服务中使用与整数相同的映射将非常简单。
关于machine-learning - 使用 Tensorflow Serving 时如何存储字典并将单词映射到整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47399201/
Serv-U 密匙冲突,Serv-U无法启动处于离线状态解决方法 大家也许会遇到,在服务器上安装SERV-U时会出现密匙冲突提示。就算汉化时钩选破解也没有用。去网上找,很多密匙要么快过期了,要么没
How can I properly simulate a cloud function locally so that it has all data as when being invoked o
我一直在使用 Angular2 进行 Web 开发,并且一直在使用 Angular2 和 Firebase 来运行本地服务器。在使用Ionic创建服务器时,我一直没能找到类似于键入quit的命令,因此
我正在尝试使用 --serve-path 在该路径下为我的整个应用程序提供服务。例如,我希望我的路径是 localhost:4200/foobar 我使用 ng serve --serve-path=
目前正在学习Jekyll,一个建站框架,不知道bundle exec jekyll serve和jekyll serve有什么区别。两者的行为似乎相同。 最佳答案 两个字: bundle exec j
很快,我在 ng serve 上有一个 4.6MB 的应用。 当我这样做时: ng serve --prod 我得到 1MB 的文件大小。 但是,--prod 以某种方式使我的整个应用程序中断。 我向
您好,我正在尝试构建我的 React 应用程序,所以我做了 yarn build它创建了必要的文件夹,现在我正在尝试做 serve -s build它告诉我下面的错误 ** 我尝试通过 npm uni
我用过 ionic serve并得到以下回复,我没有三思而后选择 localhost .但是现在我想使用选项 1。Ionic 记住了我的选择,例如 ionic serve从不允许我再选择并使用 loc
将图像(例如)保存在内存中而不是从静态 Assets 中提供它们是否值得? 频繁请求的静态资源会保留在内存中吗? 谁能告诉我性能影响? 最佳答案 除非您以每秒数千的速度为用户提供服务,否则我怀疑它会产
我的理解是,我应该能够从 Google 的 AI Hub 中获取 TensorFlow 模型,将其部署到 TensorFlow Serving 并使用它通过使用 curl 的 REST 请求发布图像来
我正在使用 Angular 7,我想知道是否 ng serve --prod 与相同 ng serve -c production 在文档中找不到,所以任何帮助将不胜感激 最佳答案 这里有一些文档:h
使用 struts.serve.static=true 和 struts,serve.static.browserCache=false 标记的浏览器缓存不起作用我有一个要求,即使用户注销并单击后退按
它曾经可以工作,但是当我重新启动我的电脑时,它就不再工作了。 nodejs目录设置在Path环境变量中。我尝试重新安装 nodejs。我还尝试卸载 @vue 文件夹,以管理员身份运行我的 git ba
互联网的应用已经波及了我们的方方面面,那么加快对于网络的学习也是必要的。所以今天我们来介绍一下Serv-U的FTP服务器的架构。本文将结合Serv-U这一功能强大,界面友好,易学易用的FTP服务器端
注意:上面是FTP服务器端建立FTP用户的教程,建立FTP用户我们需要通过FTP客户端连接服务器的FTP,从而使用FTP上传文件到服务器或下载
前言: 大家应该都还没有忘记三年前在Serv-U5.004版的之前所有版本的"Serv-U FTPMDTM命令缓冲区溢出"与"Serv-U FTP服务器LIST命令超长
比起IIS来,Serv-U的管理功能强大得多,而且设置也很方便。需要特别注意的是每进行任何一次设置或改动,都要点击界面左上角工具条的“保存”按钮才能生效。 1.账户管理 Serv-U对账户的管理
Serv-U FTP Server是一种被广泛运用的FTP服务器端软件,可以设定多个FTP服务器、限定登录用户的权限、登录主目录及空间大小等,功能非常完备.具有非常完备的安全特性,支持SSl FT
我是 Angular 的新手,我克隆了一个 repo (angular-slider)。我的问题是,当我输入控制台 grunt serve 时,它显示警告:找不到任务“服务”。使用 --force
我正在使用运行 Node v8.11.3 的 Gatsby v1.1.52。 当我跑 gatsby serve我收到一条消息,提示我有一个 UPDATE AVAILABLE: The latest v
我是一名优秀的程序员,十分优秀!