优化器通常为许多步骤运行相同的计算图,直到收敛.tensorflow是否在开始时设置图形并在每个步骤中重复使用它?如果我在培训期间更改批量大小怎么办?如果我改变损失函数对图表做一些减号怎么办?如果我对图表做了一些重大更改怎么办?张量流是否预先生成所有可能的图形?当图表发生变化时,tensorflow是否知道如何优化整个计算?
我一直在尝试使用为 Inception 模型设置的服务工具来设置重新训练的 Inception 模型。我一直在关注这里的教程。我设法使用重新训练的模型设置了服务器。我将以下代码添加到 retrain.py 文件的末尾以导出它。
export_path = "/tmp/export"
export_version = "1"
# Export inference model.
init_op = tf.group(tf.initialize_all_tables(), name='init_op')
saver = tf.train.Saver(sharded=True)
model_exporter = exporter.Exporter(saver)
signature = exporter.classification_signature(input_tensor=jpeg_data_tensor, scores_tensor=final_tensor)
model_exporter.init(sess.graph.as_graph_def(), default_graph_signature=signature)
model_exporter.export(FLAGS.export_dir, tf.constant(export_version), sess)
print('Successfully exported model to %s' % export_path)
Run Code Online (Sandbox Code Playgroud)
不过目前我只有 4 节课。我已经使用 Tensorflow 工具(不提供服务)创建了模型,我设法验证了我的模型是否适用于测试图像。现在我正在努力为它服务。我使用以下命令在模型上设置了一个服务器:
bazel-bin/tensorflow_serving/example/inception_inference --port=9000 /tmp/export/ &> retrain.log &
Run Code Online (Sandbox Code Playgroud)
我得到以下输出,它连续打印最后两行。
I tensorflow_serving/core/basic_manager.cc:189] Using InlineExecutor for BasicManager.
I tensorflow_serving/example/inception_inference.cc:383] Waiting for models to be loaded...
I tensorflow_serving/sources/storage_path/file_system_storage_path_source.cc:147] Aspiring version for servable default from path: …Run Code Online (Sandbox Code Playgroud) 如何做到用配料的性能优化max_batch_size,batch_timeout_micros,num_batch_threads等参数?尝试将这些参数与 Query 客户端一起使用,它不起作用。
在下面的示例中,我有 100 张图像,我想以 10 的大小进行批处理。查询针对所有图像而不是 10 张运行。
bazel-bin/tensorflow_serving/example/demo_batch --server=localhost:9000 --max_batch_size=10
Run Code Online (Sandbox Code Playgroud)
另外,对于批量调度,如何在第一批完成后每 10 秒运行一次?谢谢。
目标是在Java中打开一个用python创建/训练的模型tensorflow.contrib.learn.learn.DNNClassifier.
目前主要问题是要知道在会话运行方法中用java给出的"张量"的名称.
我在python中有这个测试代码:
from __future__ import division, print_function, absolute_import
import tensorflow as tf
import pandas as pd
import tensorflow.contrib.learn as learn
import numpy as np
from sklearn import metrics
from sklearn.cross_validation import train_test_split
from tensorflow.contrib import layers
from tensorflow.contrib.learn.python.learn.utils import input_fn_utils
from tensorflow.python.ops import array_ops
from tensorflow.python.framework import dtypes
from tensorflow.python.util.compat import as_text
print(tf.VERSION)
df = pd.read_csv('../NNNormalizeData-out.csv')
inputs = []
target = []
y=0;
for x in df.columns:
if y != 35 :
#print("added %d" %y)
inputs.append(x)
else …Run Code Online (Sandbox Code Playgroud) 因此,我一直在努力了解在Tensorflow中为训练模型导出训练模型时,serve_input_fn()的主要任务是什么.网上有一些例子可以解释它,但是我在为自己定义它时遇到了问题.
我试图解决的问题是回归问题,我有29个输入和一个输出.是否有用于为其创建相应服务输入功能的模板?如果我使用一类分类问题该怎么办?我的服务输入功能是否需要更改或者我可以使用相同的功能吗?
最后,我是否总是需要提供输入功能,还是仅当我使用tf.estimator导出我的模型时?
我正在使用TensorFlow构建CNN文本分类器,我想在Tensorflow服务中加载并使用服务API进行查询。当我在grcp存根上调用Predict()方法时,收到此错误:AttributeError:'grpc._cython.cygrpc.Channel'对象没有属性'unary_unary'
到目前为止,我已经完成的工作:我已经成功地训练并导出了适合服务的模型(即,签名已经过验证并使用tf.Saver,我可以成功返回预测)。我还可以将模型正确加载到tensorflow_model_server中。
这是客户端代码的片段(为便于阅读而简化):
with tf.Session() as sess:
host = FLAGS.server
channel = grpc.insecure_channel('localhost:9001')
stub = prediction_service_pb2.beta_create_PredictionService_stub(channel)
request = predict_pb2.PredictRequest()
request.model_spec.name = 'predict_text'
request.model_spec.signature_name = 'predict_text'
x_text = ["space"]
# restore vocab processor
# then create a ndarray with transform_fit using the vocabulary
vocab = learn.preprocessing.VocabularyProcessor.restore('/some_path/model_export/1/assets/vocab')
x = np.array(list(vocab.fit_transform(x_text)))
# data
temp_data = tf.contrib.util.make_tensor_proto(x, shape=[1, 15], verify_shape=True)
request.inputs['input'].CopyFrom(tf.contrib.util.make_tensor_proto(x, shape=[1, 15], verify_shape=True))
# get classification prediction
result = stub.Predict(request, 5.0)
Run Code Online (Sandbox Code Playgroud)
我在哪里弯腰规则:当正式不支持pip安装时,我在Python 3.5.3中使用tensorflow-serving-apis。各种帖子(例如:https : //github.com/tensorflow/serving/issues/581)都报告说,将tensorflow-serving与Python 3结合使用已成功。我已经从pypi(https://pypi.python.org/pypi/tensorflow-serving-api/1.5.0)下载了tensorflow-serving-apis软件包,并手动粘贴到了环境中。
版本:tensorflow:1.5.0,tensorflow-serving-apis:1.5.0,grpcio:1.9.0rc3,grcpio-tools:1.9.0rcs,protobuf:3.5.1(所有其他依赖版本已通过验证,但不包括在简洁-如果有实用程序,很高兴添加)
环境:Linux Mint …
我已经阅读了基本和高级tensorflow-serving 教程,但我仍然不清楚如何在 tensorflow-serving 中为以下内容建立支持:
考虑使用 TFBT 可用tf.contrib,但根据this,TensorFlow Boosted Trees (TFBT)需要更长的时间以培训相比xgboost,并指出它有精度差。
任何帮助或建议将不胜感激...
我已将 Keras 模型转换为 Tensorflow 估计器,将 Tensorflow Transform 添加到图中,然后导出模型以供服务。
当我检查模型签名时,我可以看到以下信息:
signature_def['serving_default']:
The given SavedModel SignatureDef contains the following input(s):
inputs['examples'] tensor_info:
dtype: DT_STRING
shape: (-1)
name: input_example_tensor:0
The given SavedModel SignatureDef contains the following output(s):
outputs['specialities'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 154)
name: specialities/Softmax:0
Method name is: tensorflow/serving/predict
Run Code Online (Sandbox Code Playgroud)
我转换了特征规范,tf.estimator.export.build_parsing_serving_input_receiver_fn因此签名中输入节点的名称是example. 我的模型中输入节点的名称是procedures.
然后我使用saved_model_cli手动测试导出的模型,一切看起来都很好(我得到了一个概率列表)
!saved_model_cli run --dir=/model_dir/1533849825
--tag_set serve
--signature_def serving_default
--input_examples 'examples=[{"procedures": ["99214,17000,17000,13121,99203"]}]'
Run Code Online (Sandbox Code Playgroud)
现在,我将此模型加载到 TF Serving 中,模型服务器启动正常。
当我使用下面的 json 有效负载 (application/json) 请求模型预测时,我收到以下错误:
{
"signature_name":"serving_default",
"instances":[ …Run Code Online (Sandbox Code Playgroud) rest keras tensorflow tensorflow-serving tensorflow-estimator
需要帮助实时实施Tensorflow模型.虽然我正在训练一切工作正常但是当我继续进行实时预测或预测时,我收到的输出不及格.我不知道为什么会这样.我在这里使用了代码的引用:https://www.kaggle.com/raoulma/ny-stock-price-prediction-rnn-lstm-gru/notebook 并尝试使用相同的代码实现或部署,几乎没有更改.
请参阅以下代码:
import numpy as np
import pandas as pd
import sklearn
import sklearn.preprocessing
import datetime
import os
import tensorflow as tf
df = pd.read_csv("Realtime_Values.csv", index_col = 0)
df.info()
def load_data(stock,seq_len):
data_raw = stock.as_matrix() # convert to numpy array
data = []
for index in range(len(data_raw) - seq_len):
data.append(data_raw[index: index + seq_len])
#print(len(data))
data = np.array(data);
x_forecast = data[:,:-1,:]
return x_forecast
def normalize_data(df):
cols = list(df.columns.values)
min_max_scaler = sklearn.preprocessing.MinMaxScaler()
df = pd.DataFrame(min_max_scaler.fit_transform(df.values))
df.columns = cols
return …Run Code Online (Sandbox Code Playgroud) 我正在尝试将多个model_spec及其受尊敬的输入添加为单个 predict_pb2.PredictRequest(),如下所示:
tmp = predict_pb2.PredictRequest()
tmp.model_spec.name = '1'
tmp.inputs['tokens'].CopyFrom(make_tensor_proto([1,2,3]))
tmp.model_spec.name = '2'
tmp.inputs['tokens'].CopyFrom(make_tensor_proto([4,5,6]))
Run Code Online (Sandbox Code Playgroud)
但是我只得到2的信息:
>> tmp
model_spec {
name: "2"
}
inputs {
key: "tokens"
value {
dtype: DT_INT32
tensor_shape {
dim {
size: 3
}
}
tensor_content: "\004\000\000\000\005\000\000\000\006\000\000\000"
}
}
Run Code Online (Sandbox Code Playgroud)
如何为具有各自输入的多个模型获得单个PredictRequest()?
我的目的是创建一个请求并将其发送到为两个模型提供服务的tensorflow服务。还有其他解决方法吗?为两个模型创建两个单独的请求,并从tf_serving一个接一个的工作中获得结果,但是我想知道是否可以将两个请求合并为一个。