Open Manojbhat09 opened 4 years ago
This commit is a good example of adding implementation for a operator on one or more backends.
A rough instruction -
add a new file (if it doesn't exist) under lib/ops/
for the operator, implement an abstract class derived from Operator
with member function initialize
, checkInputs
and checkInputTypes
. Operator attributes are usually put here too.
add a new file under lib/backends/webgl/ops/
for the operator, implement a class that extends the abstract class described in (1) and implement interface WebGLOperator
as well.
run
usually implement as calling WebGLOperatorHelper.run()
, unless a custom step is requiredcreateProgramInfo
returns the shader and layoutcreateRunData
returns the texture data and uniform binding (if any)add resolve rules in /lib/backends/webgl/op-resolve-rules.ts
for the newly implemented operator.
add standard node test or custom operator test in unittest-whitelist.jsonc
.
Let me know if you have further questions
Hi, @fs-eire Thanks for your response. I wanted to know how to do tests. There are .pd files I guess generated from TensorFlow. I was wondering if we can generate the same from Pytorch? How would that look like?
I did a PR but failed due to tests I think. https://github.com/microsoft/onnxjs/pull/220
Please provide a short guide on how to write ops.