【问题标题】:Tensorflow: data source can be dynamic?Tensorflow:数据源可以是动态的吗?
【发布时间】:2015-11-19 16:54:17
【问题描述】:

在我在Tensorflow documentation 中看到的所有示例中,输入都是从静态源解析的——通常是一个文件。 是否可以构建一个数据来自不同来源的图表?在我的用例中,数据来自服务器的消息字符串:我想将这些消息在它们到来时转换为张量,并将这些张量用作图形计算部分的输入。

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    从动态源提供数据的最简单方法是在图表中放置一个或多个 tf.placeholder() 操作来表示输入张量,并在每次调用 @ 时使用 feed mechanism 为这些张量提供不同的值987654329@。如果这样做,则可以编写任意 Python 代码来生成输入数据,这可能涉及调用远程服务器 - 甚至在服务器端处理传入请求。

    如果您在 C++ 中执行此操作,tensorflow::Session 类提供相同的功能来提供占位符值,使用 Session::Run() 方法。馈入的值必须是 tensorflow::Tensor 对象,您可以通过指定数据类型和形状(维度列表)来创建这些对象。 Tensor 对象的方法允许您以多维数组的形式访问它们(如 Tensor::scalar<T>()Tensor::matrix<T>()Tensor::tensor<T, NDIMS>()),您可以按如下方式填写它们的值:

    tensorflow::Tensor t(DT_FLOAT, tensorflow::TensorShape({2, 2}));
    t.matrix()(0, 0) = 1.0;
    t.matrix()(0, 1) = 0.0;
    t.matrix()(1, 0) = 0.0;
    t.matrix()(1, 1) = 1.0;
    

    您还可以使用Eigen Tensor 库的所有方法来构建这些值。

    【讨论】:

    • 好吧,我得到的结论是一样的。由于不同的原因,我需要用 C++ 开发执行部分,即使我开发了用 C++ 向服务器发送请求的代码。在文档中,我看到很少或没有 C++ 方法可以从不同的格式(如字符串、数组或类似格式)检索张量......
    • 我添加了一些有关如何使用 C++ 执行此操作的详细信息 - 希望对您有所帮助!
    • 感谢您的回复。您的建议非常有用。我看到有一个接受分配器指针的构造函数。是否有一种方法可以将在堆中分配的数据的缓冲区传递给此构造函数,以便使用缓冲区中包含的数据自动初始化张量?出于速度和效率问题,我想尽可能避免复制。
    • 您可以实现一个纯虚拟的tensorflow::Allocator 接口:github.com/tensorflow/tensorflow/blob/master/tensorflow/core/…(但请注意,这在技术上不是受支持的公共接口的一部分,因此它可能会随着时间而改变)跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    相关资源
    最近更新 更多