tf.parse_example 用于 mnist 导出示例

tf.parse_example used in mnist export example

我是 tensorflow 的新手,正在阅读 mnist_export.py in tensorflow serving example。

这里有些地方我不明白:

  sess = tf.InteractiveSession()
  serialized_tf_example = tf.placeholder(tf.string, name='tf_example')
  feature_configs = {
      'x': tf.FixedLenFeature(shape=[784], dtype=tf.float32),
  }
  tf_example = tf.parse_example(serialized_tf_example, feature_configs)
  x = tf.identity(tf_example['x'], name='x')  # use tf.identity() to assign name

上面,serialized_tf_example是张量。

我已阅读 api 文档 tf.parse_example 但似乎 serialized 已序列化 Example protos,如:

serialized = [
  features
    { feature { key: "ft" value { float_list { value: [1.0, 2.0] } } } },
  features
    { feature []},
  features
    { feature { key: "ft" value { float_list { value: [3.0] } } }
]

那么如何理解这里的tf_example = tf.parse_example(serialized_tf_example, feature_configs),因为serialized_tf_example是一个Tensor,而不是Example proto?

这里serialized_tf_example是一个tf.train.Example的序列化字符串。请参阅 tf.parse_example for the usage. Reading data 一章给出了一些示例 link。

tf_example.SerializeToString() 将 tf.train.Example 转换为字符串,tf.parse_example 将序列化的字符串解析为字典。

下面提到的代码提供了使用 parse_example

的简单示例
import tensorflow as tf
sess = tf.InteractiveSession()
serialized_tf_example = tf.placeholder(tf.string, shape=[1], name='serialized_tf_example')
feature_configs = {'x': tf.FixedLenFeature(shape=[1], dtype=tf.float32)}
tf_example = tf.parse_example(serialized_tf_example, feature_configs)

feature_dict = {'x': tf.train.Feature(float_list=tf.train.FloatList(value=[25]))}
example = tf.train.Example(features=tf.train.Features(feature=feature_dict))
f = example.SerializeToString()


sess.run(tf_example,feed_dict={serialized_tf_example:[f]})