tensorflow / tfjs

A WebGL accelerated JavaScript library for training and deploying ML models.
https://js.tensorflow.org
Apache License 2.0
18.51k stars 1.94k forks source link

The output shape of the tf.conv1d operation on the CPU backend is inconsistent with the output shape on the TensorFlow backend #8404

Open liliquan0118 opened 1 month ago

liliquan0118 commented 1 month ago

Please make sure that this is a bug. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:bug_template

System information

Describe the current behavior

    var x = [[1165770376.0615559],[2071486936.2386856],[1151127540.6558466]]
    var filter = [[[1154931189.8559952]],[[961048433.571806]]]
    var stride = 2
    var pad = 0
    var dataFormat = "NWC"
    var dilation = 1
    var dimRoundingMode = "ceil"
    var result = tf.conv1d(x, filter,stride,pad,dataFormat,dilation,dimRoundingMode);
    console.log("the result of ", tf.getBackend(), "is:\n" );
    result.print();

The shape of the result is inconsistent when executing the above code snippets on CPU and tensorflow backends.

Output: image

Describe the expected behavior The output should be consistent across all backends.

Standalone code to reproduce the issue Provide a reproducible test case that is the bare minimum necessary to generate the problem. If possible, please share a link to Colab/CodePen/any notebook.

var tf=require("@tensorflow/tfjs");
require("@tensorflow/tfjs-node");

async function conv1d(backend){
    await tf.setBackend(backend);
    await tf.ready() 
    var x = [[1165770376.0615559],[2071486936.2386856],[1151127540.6558466]]
    var filter = [[[1154931189.8559952]],[[961048433.571806]]]
    var stride = 2
    var pad = 0
    var dataFormat = "NWC"
    var dilation = 1
    var dimRoundingMode = "ceil"
    var result = await tf.conv1d(x, filter,stride,pad,dataFormat,dilation,dimRoundingMode);
    await console.log("the result of ", tf.getBackend(), "is:\n" );
    await result.print();
}
async function test() {
    await conv1d("cpu");
    // await conv1d("webgl");
    await conv1d("tensorflow");
}

test();

Other info / logs Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached.