是否可以使用没有标记输入(或输出)节点的Tensorflow C ++ API执行图形?据我所知,在训练我的模型时(在python中使用skflow,我后来将其保存为二进制protobuf),我没有标记输入/输出节点,但我能够恢复模型并毫无困难地进行预测在Python中。当使用C ++ API执行图形时,输入向量是字符串和张量对,其中我假设字符串是指输入节点的标签。来自文档:
Session::Run(const std::vector< std::pair< string, Tensor > > &inputs, const std::vector< string > &output_tensor_names, const std::vector< string > &target_node_names, std::vector< Tensor > *outputs)=0
使用提供的输入张量运行图形并填充输出 output_tensor_names中指定的端点。跑到但不是 返回target_node_names中节点的张量。
有没有办法在不知道输入/输出节点标签的情况下执行图表?也许有一种方法可以在Python中加载图形,给出节点标签,然后再将其保存为protobuf?理想情况下,我只想传入一个应用于输入节点的向量,而不必担心任何标签。
答案 0 :(得分:6)
在skflow中,所有节点都有标签,只需要为您恢复它们。
input:0
和output:0
的默认名称分别为X
和y
,然后根据您使用的模型预测和丢失一些自定义名称。
找出预测和概率节点名称的方法是查看保存模型的目录中的endpoints
文件(如果您使用estimator.save(path)
进行保存)。
它应该是这样的:
输入:0
输出:0
logistic_regression / softmax_classifier /使用SoftMax
logistic_regression / softmax_classifier / xent:0
前两个是输入/输出节点的名称,后两个是预测和丢失节点。
答案 1 :(得分:1)
如果您可以“恢复模型并在Python中毫无困难地进行预测”,那么您可以使用“name”属性找到输入节点或张量的名称/标签,在以下任一位置搜索“.name”:
https://www.tensorflow.org/versions/0.6.0/api_docs/python/framework.html#Operation 要么: https://www.tensorflow.org/versions/0.6.0/api_docs/python/framework.html#Tensor
所有节点都有名称/标签,无论您是否明确命名它们。