保存SparseTensor时的Tensorflow警告

时间:2016-09-08 14:53:12

标签: tensorflow

我正在开发一个TensorFlow项目,其目标是'定义为: targets = tf.sparse_placeholder(tf.int32, name='targets')

现在使用saver.save(sess, model_path, meta_graph_suffix='meta', write_meta_graph=True)保存我的模型会出现以下错误:

WARNING:tensorflow:Error encountered when serializing targets. Type is unsupported, or the types of the items don't match field type in CollectionDef. 'SparseTensor' object has no attribute 'name'

我认为警告打印在以下代码行中:https://github.com/tensorflow/tensorflow/blob/f974e8d0c2420c6f7e2a2791febb4781a266823f/tensorflow/python/training/saver.py#L1452

使用saver.restore(session, save_path)重新加载模型似乎可行。

以前有人见过这个问题吗?为什么序列化SparseTensor会发出警告?有没有办法避免这种警告?

我正在使用TensorFlow版本0.10.0rc0 python 2.7 GPU版本。我不能提供一个最小的例子,它不会一直发生,只在某些配置中。我无法分享我目前遇到此问题的模型。

2 个答案:

答案 0 :(得分:3)

组件占位符(对于indicesvalues,可能还有shape)以某种方式添加到某些集合中。如果您浏览saver.py中的代码,则可以看到ops.get_all_collection_keys()正在使用。

这应该是良性警告。我将转发给团队,看看是否可以采取措施来改善这种处理方式。

答案 1 :(得分:2)

警告意味着已将一个SparseTensor类型的操作添加到其to_proto()实现需要“name”字段的集合中。

如果您打算从meta_graph中恢复完整的图形,包括所有Python对象,我会认为这是一个错误,您应该找出将SparseTensor添加到集合中的操作。

如果您从未打算从meta_graph恢复,则可以忽略此错误。

希望有所帮助。

雪利酒