Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
张量流卷积码优化 我使用C++版本的TensorFLow,并使用下面的命令成功构建了Android的TysFooScript 'bazel build-c opt//tensorflow/examples/android:tensorflow_demo' 如中所述_Tensorflow_Convolution - Fatal编程技术网

张量流卷积码优化 我使用C++版本的TensorFLow,并使用下面的命令成功构建了Android的TysFooScript 'bazel build-c opt//tensorflow/examples/android:tensorflow_demo' 如中所述

张量流卷积码优化 我使用C++版本的TensorFLow,并使用下面的命令成功构建了Android的TysFooScript 'bazel build-c opt//tensorflow/examples/android:tensorflow_demo' 如中所述,tensorflow,convolution,Tensorflow,Convolution,我正在尝试优化卷积码。下面是面临的问题 无法找到卷积码的确切位置。 我能够调试代码,直到下面的函数 '返回选择( Cond(), 重塑(内核尺寸) .合同(输入) .提取\u图像\u补丁( 麦粒,麦粒,麦粒,麦粒步幅,麦粒步幅, 行内步幅、列内步幅、填充类型) .重塑(合同签订前的dims), 合约(修订) .重塑(合同签订后的dims), 输入 .提取图像块(核心行、核心列、行步幅、列步幅、, 行内步幅、列内步幅、填充类型) .重塑(合同签订前的dims) .contract(kernel.r

我正在尝试优化卷积码。下面是面临的问题

  • 无法找到卷积码的确切位置。 我能够调试代码,直到下面的函数
  • '返回选择( Cond(), 重塑(内核尺寸) .合同(输入) .提取\u图像\u补丁( 麦粒,麦粒,麦粒,麦粒步幅,麦粒步幅, 行内步幅、列内步幅、填充类型) .重塑(合同签订前的dims), 合约(修订) .重塑(合同签订后的dims), 输入 .提取图像块(核心行、核心列、行步幅、列步幅、, 行内步幅、列内步幅、填充类型) .重塑(合同签订前的dims) .contract(kernel.reforme(内核尺寸),contract尺寸) .重塑(合同签订后)

    存在于

    我有几个与上述功能相关的问题。

    1.1上述函数是否真的执行卷积?如果是,代码在哪里?

    1.2收缩(收缩函数)与卷积相同吗?如果卷积和收缩都相同,为什么对输入矩阵和内核矩阵都执行收缩操作?

    1.3功能的定义在哪里-选择、重塑、收缩、提取图像块等?

    2.无法从输入和内核矩阵中提取数据(矩阵)。这与上面链接中的同一页有关

    2.1我发现了一行代码“kern(kernel);”在上页第946行。我可以知道上述功能的位置定义吗?

    2.2我无法从相应的4d张量(输入和内核)中提取输入和内核矩阵作为浮点数组,因为我想尝试使用并行处理优化卷积码。我找不到任何方法将张量矩阵从张量4D转换为数组


    请帮我回答上述问题

    它是从Linux缓存中的Egen TensorFlow文件中选取的。我的路径是/.cache/bazel/_bazel_ashok/c54b442ed4139c7d8ad47f330eb538d6/external/Egen_archive

    是的,代码是在Cond()语句之后出现的:

    // If this condition is met, the first argument is chosen, if not, the second one
    // is chosen, this condition checks if the input is ColMajor or RowMajor, all of
    // the tests I've done result in a RowMajor but I don't know what determines this
    // exactly
    return choose( Cond(),
    
    // ColMajor
    kernel.reshape(kernel_dims) .contract(input 
    .extract_image_patches( kernelRows, kernelCols, row_stride, col_stride, 
    row_in_stride, col_in_stride, padding_type) .reshape(pre_contract_dims), 
    contract_dims) .reshape(post_contract_dims),
    
    // RowMajor
    input.extract_image_patches(kernelRows, kernelCols, row_stride, col_stride, 
    row_in_stride, col_in_stride, padding_type) .reshape(pre_contract_dims) 
    .contract(kernel.reshape(kernel_dims),contract_dims).reshape(post_contract_dims));
    
    1.2)不,收缩是矩阵乘法到N维张量的抽象。它仅适用于其中一个,具体取决于条件

    1.3)这些都是本征函数,本征函数对它们的张量运算没有什么帮助。我在他们的wiki上找到了可以帮助你理解它们的功能的文档,虽然不全面,但它可以帮助你了解运算的概念

    2.1)我也不知道它在哪里

    2.2)我不确定这是否可以直接实现,特征函数可能相当不直观,如果你知道4D张量的形状,你可以创建一个矩阵,然后将每个元素分配给该矩阵(我认为这不是很有效)


    我刚意识到这是一年前发布的,但我已经写了我的答案,它可能对其他人有用,所以我就把它留在这里。

    2.1)kern是一个TensorRef类型的对象,kern(内核)用输入内核调用该对象的构造函数。这不是你问题的答案!!