7

这里的主要问题是哪里(如果)有一个objects.invfor TensorFlow,但是一个如何实际使用它的例子会很好。

例如,我目前有以下文档字符串:

"""
Load the weights of a model stored in saver.

Parameters
----------
checkpoint_dir : str
    The directory of checkpoints.
sess : tf.Session
    A Session to use to restore the parameters.
saver : tf.train.Saver
"""

如何使用 intersphinx 自动将对象链接到 TensorFlow 文档?

4

1 回答 1

6

更新(2020 年 5 月 30 日): Github 用户“mr-ubik”已经整理了一个包来为 Tensorflow 2.0objects.invPython API(不是 JS、C++ 或 Java)自动生成一个包,可以在这里找到。存储库既有objects.inv文件本身,也有用于创建它的工具,以及用于将其intersphinx_mapping链接到您的文档的元素。


更新(2021 年 3 月 16 日):根据评论,STJ 在https://github.com/GPflow/tensorflow-intersphinx/的分叉中继续开发用于自动生成objects.invfor Tensorflow的工具。该清单现在以 TensorFlow v2.4 为目标,包括 TensorFlow Probability v0.12。


mzjn 是对的——如果文档不是 Sphinx 生成的,则不会有objects.inv文件可供查找。

但是,您可以创建自己的objects.inv与 Tensorflow 一起使用。我编写了一个 Python 包来让我做这个确切的事情,以及操作说明。简而言之,请注意这里的一些细节可能不完全正确:

  1. 导入sphobjinv并创建一个空的Inventory

    >>> import sphobjinv as soi
    >>> inv = soi.Inventory()
    
  2. 定义 Sphinx 头信息:

    >>> inv.project = 'Tensorflow'
    >>> inv.version = '2.2'
    
  3. sphobjinv.DataObjStr将实例附加到您希望包含的每个对象的objects成员:Inventory

    >>> o = soi.DataObjStr(name='tf.autodiff', domain='py', role='module',
    ... priority='1', uri='python/tf/autodiff', dispname='-')
    >>> inv.objects.append(o)
    >>> print(inv)
    <Inventory (manual): foobar v1.5, 1 objects>
    

    {name}通常是完全限定的对象名称。文档的 Python、C++ 和 Javascript 部分可以由默认pythoncpp、 和jsSphinx 域处理,但您必须为 Java创建自己的 Sphinx 域。(不幸的是,提供这样一个域的javasphinx项目{role}已被弃用。)将是适用于每个记录的对象的任何合适的指令(例如,functionmethod的 、 等py)。{priority}也会影响清单中的对象在内部文档搜索中的显示方式,并且几乎应该总是1处于这样的情况。{relative uri}相对于您将包含在参数中的基本intersphinx_mappingURIconf.py(见下文)。{displayname}通常也是完全限定的对象名称。

  4. 生成并压缩清单内容,并写入磁盘:

    >>> text = inv.data_file(contract=True)
    >>> ztext = soi.compress(text)
    >>> soi.writebytes('objects_tensorflow.inv', ztext)
    
  5. 上传到方便、可访问的位置。

  6. 配置 intersphinx:

    intersphinx_mapping = {
        'tensorflow' = (
            'https://www.tensorflow.org/versions/r2.2/api_docs/',
            'uri/to/objects_tensorflow.inv',
        )
    }
    

那应该这样做。这有点费力,必须手动合成文件,但如果您只是根据需要添加对象,那应该不会太糟糕。或者,您可以抓取文档页面集并自动生成清单(就像 mr-ubik 所做的那样)。

于 2016-05-25T17:47:20.803 回答