blob: c14f445bf3cd503c8f87686c533dac0d1caf0867 [file] [log] [blame]
// META: title=validation tests for WebNN API convTranspose2d operation
// META: global=window,dedicatedworker
// META: script=../resources/utils_validation.js
'use strict';
// Example input in NCHW layout.
const kExampleInputDescriptor = {
dataType: 'float32',
dimensions: [1, 1, 5, 5]
};
// Example filter in OIHW layout.
const kExampleFilterDescriptor = {
dataType: 'float32',
dimensions: [1, 1, 3, 3]
};
const kExampleBiasDescriptor = {
dataType: 'float32',
dimensions: [/* output channels */ 1]
};
multi_builder_test(async (t, builder, otherBuilder) => {
const inputFromOtherBuilder =
otherBuilder.input('input', kExampleInputDescriptor);
const filter = builder.input('filter', kExampleFilterDescriptor);
assert_throws_js(
TypeError, () => builder.convTranspose2d(inputFromOtherBuilder, filter));
}, '[convTranspose2d] throw if input is from another builder');
multi_builder_test(async (t, builder, otherBuilder) => {
const filterFromOtherBuilder =
otherBuilder.input('filter', kExampleFilterDescriptor);
const input = builder.input('input', kExampleInputDescriptor);
assert_throws_js(
TypeError, () => builder.convTranspose2d(input, filterFromOtherBuilder));
}, '[convTranspose2d] throw if filter is from another builder');
multi_builder_test(async (t, builder, otherBuilder) => {
const biasFromOtherBuilder =
otherBuilder.input('bias', kExampleBiasDescriptor);
const options = {inputLayout: 'nchw', bias: biasFromOtherBuilder};
const input = builder.input('input', kExampleInputDescriptor);
const filter = builder.input('filter', kExampleFilterDescriptor);
assert_throws_js(
TypeError, () => builder.convTranspose2d(input, filter, options));
}, '[convTranspose2d] throw if bias option is from another builder');
multi_builder_test(async (t, builder, otherBuilder) => {
const activationFromOtherBuilder = otherBuilder.clamp();
const options = {activation: activationFromOtherBuilder};
const input = builder.input('input', kExampleInputDescriptor);
const filter = builder.input('filter', kExampleFilterDescriptor);
assert_throws_js(
TypeError, () => builder.convTranspose2d(input, filter, options));
}, '[convTranspose2d] throw if activation option is from another builder');