Setup guide (for Windows)

No browser on Windows supports WebGPU, but you can still develop applications using WebDNN. Commands have to be used on command prompt.

Downloading code

git clone

If you do not have git, zip file is also available:

Once you learn how to use WebDNN and want to use it in your project, npm and pip packages may be useful (please note that they does not contain examples).

Installing python environment

If you do not have python environment, install python environment.

Anaconda is the popular installer:

When installing, adding PATH to system is optional.

This framework requires python3.6+. This document is based on Anaconda 4.4.0.

If you want to convert models of Caffe or Chainer, install chainer package. Refer to Chainer document.

(Currently, tested with chainer==4.4.0)

Installing Emscripten and Eigen

If you want to enable WebAssembly backend, em++ command from Emscripten is required. You can skip this section if you try WebGPU backend only.

To setup Emscripten which supports WebAssembly, follow the official page

Please note that “Emscripten SDK Offline Installer (emsdk-1.35.0-full-64bit.exe)” is too old because WebDNN uses options only avaliable on newer versions.

Please note that emsdk_env.bat have to be run every time.

Eigen is needed as the library. Download latest source from and decompress.

Move Eigen directory into emsdk/emscripten/*/system/include. * is version number of emscripten. The file include/Eigen/Dense have to exist.

Setting for using proper python

python environment (3.6.x) of Anaconda have to be executed with python3 command. To accompilsh it, create a file named python3.bat and fill with the following content.

"C:\ProgramData\Anaconda3\python.exe" %*

The actual path depends on your Anaconda installation. This is needed because emsdk_env.bat overwrites python to Emscripten’s python 2.7.

Verification of Emscripten and Eigen installation

Create a file named hello.cpp:

#include <Eigen/Dense>
#include <iostream>

int main()
  std::cout << "hello world" << std::endl;
  return 0;

Then, try to compile it into WebAssembly:

em++ hello.cpp -O3 -s WASM=1 -o hello.html

If Emscripten works well, files such as hello.wasm, hello.html are generated.

Installing graph transpiler

Install graph transpiler for Anaconda python environment.

python3 -m pip install webdnn

Here, python3.bat have to exist on the current directory.

Running example

cd example\mnist

Here, python3.bat have to exist on the current directory.

Graph descriptor files for each backend are generated.