UNPKG

@ai-on-browser/data-analysis-models

Version:

Data analysis model package without any dependencies

46 lines (44 loc) 1.34 kB
import { onnx } from '../onnx_importer.js' import { loadAttribute } from '../utils.js' /** * Handle averagepool operator * @module HandleONNXAveragePoolOperator * @see https://github.com/onnx/onnx/blob/main/docs/Operators.md#AveragePool */ export default { /** * Import from onnx object. * @param {onnx.ModelProto} model Model object * @param {onnx.NodeProto} node Node object * @returns {object[]} Objects represented a layer */ import(model, node) { const attrs = {} for (const attribute of node.getAttributeList()) { attrs[attribute.getName()] = loadAttribute(attribute) } if (attrs.strides && attrs.strides.some(v => v !== attrs.strides[0])) { throw new Error(`Invalid attribute 'strides' value ${attrs.strides}.`) } if (attrs.auto_pad && attrs.auto_pad !== 'NOTSET') { throw new Error(`Invalid attribute 'auto_pad' value ${attrs.auto_pad}.`) } else if (attrs.pads) { const p = [] for (let i = 0; i < attrs.pads.length / 2; i++) { p.push([attrs.pads[i], attrs.pads[i + attrs.pads.length / 2]]) } attrs.pads = p } return [ { type: 'average_pool', input: [node.getInputList()[0]], name: node.getOutputList()[0], kernel: attrs.kernel_shape, padding: attrs.pads || 0, stride: attrs.strides ? attrs.strides[0] : 1, channel_dim: 1, }, ] }, }