tfjs-wechat icon indicating copy to clipboard operation
tfjs-wechat copied to clipboard

Output of MaxPooling2d not as expected on some Android devices with input tensor of certain shape.

Open 109021017 opened this issue 2 years ago • 3 comments

TensorFlow.js version: 3.18.0 tfjs-wechat plugin version: 0.2.0 WeChat version: 8.0.18 WeChat base API version: 3.4.6 WeChat IDE version: 1.0.5

Strange output of MaxPooling2d on some Android Devices (tested on Google Pixel 3XL and Samsung Galaxy S20) only with webgl backend.

let zeroTensor= tf.zeros([1, 4, 110, 2], 'float32');
let maxPool = tfl.layers.maxPool2d({
        poolSize: [2, 2],
        strides: [2, 2]
    }); 
let tensorAfterPooling = maxPool.apply(zeroTensor) as tf.Tensor;
console.log(tf.min(tensorAfterPooling).dataSync()[0], tf.max(tensorAfterPooling).dataSync()[0])

output expected: 0 0 output: -65503.99609375 0

109021017 avatar Jun 06 '22 07:06 109021017

This looks like it is overflowing, are you using float32 texture or float16 texture?

pyu10055 avatar Jul 11 '22 17:07 pyu10055

This looks like it is overflowing, are you using float32 texture or float16 texture?

console.log(tf.ENV.getBool('WEBGL_RENDER_FLOAT32_CAPABLE')) true console.log(tf.ENV.getBool('WEBGL_RENDER_FLOAT32_ENABLED')) true

but after I tf.ENV.set("WEBGL_RENDER_FLOAT32_ENABLED", false) the output is still wrong.

109021017 avatar Jul 12 '22 03:07 109021017

While on iPhone which produce the right result, the WEBGL_RENDER_FLOAT32_CAPABLE and WEBGL_RENDER_FLOAT32_ENABLED is always false.

109021017 avatar Jul 12 '22 03:07 109021017