PyTorch - Python + Nim

Overview

NimTorch

Master Release
Build Status Build Status

Pytorch - Py + Nim

A Nim frontend for pytorch, aiming to be mostly auto-generated and internally using ATen.

Because Nim compiles to C++, this is not a wrapper or binding library. It generates 1-to-1 native ATen code.

The only requirement from pytorch is ATen's core tensor library. Because of this, nimtorch is extremely versatile and can compile on any kind of device.

Current status

Early stage

  • Automatically generated, from Declarations.yaml, the full ATen API
  • Cuda support ( add -d:cuda when compiling with nim )
  • WASM support ( add -d:wasm when compiling with nim )
  • Automatically generated, from derivatives.yaml, gradient procs
  • Autograd
  • Add missing derivatives
  • More high level pytorch API (Module, Models etc)
  • ...

The final aim is to be as compatible as possible with the pytorch API.

Why

Ease of use of the python language while keeping fully bare metal native C++ performance

Python code

# GRUCell
gi = x.matmul(w_input.t()) + b_input
gh = hidden.matmul(w_recur.t()) + b_recur
i_r, i_i, i_n = gi.chunk(3, 1)
h_r, h_i, h_n = gh.chunk(3, 1)
resetgate = (i_r + h_r).sigmoid()
inputgate = torch.sigmoid(i_i + h_i)
newgate = (i_n + resetgate * h_n).tanh()
hy = newgate + inputgate * (hidden - newgate)

Nim code

# GRUCell
let
  gi = x.matmul(w_input.t()) + b_input
  gh = hidden.matmul(w_recur.t()) + b_recur
  (i_r, i_i, i_nn) = gi.chunk(3, 1)
  (h_r, h_i, h_n)  = gh.chunk(3, 1)
  resetgate = (i_r + h_r).sigmoid()
  inputgate = torch.sigmoid(i_i + h_i)
  newgate = (i_nn + resetgate * h_n).tanh()
  hy = newgate + inputgate * (hidden - newgate)

Getting started

Requirements

Linux: A recent distribution on par with ubuntu 18.04 in terms of libc and basic libraries, gcc compiler

macOS: We compile with 10.13 min version flags but might work even on lower versions, XCode for the compilers

Windows: Windows 10, Visual Studio Runtime 2017 and Visual Studio 2017 (any edition)

WASM: Latest Emscripten compiler and tools

Super easy, using conda

Linux, macOS and Windows

conda create -n nimtorch -c fragcolor nimtorch (add cuda10.0 for cuda 10 linux only or add wasm for wasm version)

source activate nimtorch or on windows: conda activate nimtorch

This will install: nim and ATen binaries, fragments and nimtorch all in one command, nothing else needed.

Make sure you use a recent version of conda and have a compiler installed in your system, on windows you have to add --cc:vcc and be on a developer prompt.

Make sure your system is recent (ubuntu 18.04 reference / macOS High Sierra / Windows 10) and you have cuda 9.2 installed (if you need cuda, linux only, more cuda versions coming, please open a issue if you need a specific version).

Test with with something like:

nim cpp -o:test -r $ATEN/dist/pkgs/nimtorch-\#head/tests/test_xor.nim

or on windows... (because dlls need to be side by side)

nim cpp -o:%ATEN%/lib/test.exe -r %ATEN%/dist/pkgs/nimtorch-#head/tests/test_xor.nim

Semi manual way

Linux, macOS and Windows

Check what version of ATen/PyTorch we need in conda/nimtorch/meta.yaml - should be something like aten ==2018.10.10.1089

Note the version as you will need it in the next step

conda create -n aten -c fragcolor aten={version}

or

WASM

conda create -n aten -c fragcolor aten={version} wasm

or Cuda 10.0 (linux only)

conda create -n aten -c fragcolor aten={version} cuda10.0

activate aten environment

source activate aten or on windows: conda activate aten

  1. Make sure you have a recent Nim and Nimble version in your path
  1. clone the release branch git clone -b release https://github.com/fragcolor-xyz/nimtorch.git
  2. cd nimtorch
  3. nimble develop

finally

run self test nim cpp -o:test -r torch.nim (use -o:%ATEN%/lib/test.exe instead on windows because of dll location)

in the case of WASM:

run self test nim cpp -d:wasm -o:test.js torch.nim && node test.js (needs node.js)

Manual way without requiring conda

Build ATEN

pip2 install pyyaml typing
git clone -b fragcolor-devel https://github.com/fragcolor-xyz/pytorch.git
cd pytorch
git reset --hard <commit hash> # from torch/commit.txt
git submodule update --init
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DUSE_CUDA=OFF -DBUILD_ATEN_ONLY=ON -DCMAKE_INSTALL_PREFIX=`pwd`/output ../
make -j4
make install

# also copy derivatives if we want to run generator.nim or nimble test
# notice generator.nim might need python3 and pyyaml
cp ../tools/autograd/derivatives.yaml `pwd`/output/share/

Test the build

cd <nimtorch repo>
ATEN=<installation path of ATEN> nim cpp -r -f -o:/tmp/z01 torch.nim # for eg: ATEN=pathto/pytorch/build/output/

Notes

  • We suggest setting OMP_WAIT_POLICY environment variable to PASSIVE when running on CPU.
Comments
  • OSX: `nim cpp -r torch.nim` fails

    OSX: `nim cpp -r torch.nim` fails

    after building ATEN via https://github.com/fragcolor-xyz/nimtorch/issues/5#issuecomment-427937945:

    ATEN=/tmp/d11/Users/timothee/git_clone/nim/pytorch/built/output/lib nim cpp -r torch.nim
    error: unknown type name 'constexpr'
    
    ATEN=/tmp/d11/Users/timothee/git_clone/nim/pytorch/built/output nim cpp -r --passC:-std=c++11 torch.nim
    /Users/timothee/.cache/nim/torch_d/torch_tensors.cpp:206:14: error: no matching constructor for initialization of 'at::IntList' (aka 'ArrayRef<long long>')
            at::IntList temp(((long*) ((&self[((NI) 0)]))), selfLen_0);
                        ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /tmp/d11/Users/timothee/git_clone/nim/pytorch/built/output/include/ATen/core/ArrayRef.h:67:13: note: candidate constructor not viable: no known conversion from 'long *' to 'const long long *' for 1st argument
      constexpr ArrayRef(const T* data, size_t length)
    
    
    question macOS 
    opened by timotheecour 11
  • OSX: building ATEN via `docker build -t docker_aten_native .` fails

    OSX: building ATEN via `docker build -t docker_aten_native .` fails

    Download ATen binaries or build it (instructions under)

    => no OSX option

    ATen build instructions

    cd docker && cd docker-aten-native

    is that a typo?

    is my best bet to try to follow instructions from https://github.com/pytorch/pytorch or https://github.com/pytorch/pytorch/tree/master/aten ?

    enhancement macOS 
    opened by timotheecour 11
  • SIGSEGV when running examples

    SIGSEGV when running examples

    Using the latest nimtorch, I'm getting a SIGSEGV when trying to compile one of the examples (test_xor).

    I'm not sure if this is a compiler bug or a problem with Aten?

    Dockerfile:

    FROM continuumio/miniconda
    
    RUN conda install -y -c fragcolor nimtorch
    
    ADD test.nim .
    
    docker build -t nimtorch_conda .
    docker run --rm nimtorch_conda nim c test.nim
    #Hint: used config file '/opt/conda/config/nim.cfg' [Conf]
    #Hint: used config file '/opt/conda/config/config.nims' [Conf]
    #Hint: system [Processing]
    #Hint: widestrs [Processing]
    #Hint: io [Processing]
    #Hint: test [Processing]
    #Hint: torch [Processing]
    #Hint: macros [Processing]
    #Hint: cpp [Processing]
    #Hint: nimline [Processing]
    #Hint: tables [Processing]
    #Hint: hashes [Processing]
    #Hint: strutils [Processing]
    #Hint: parseutils [Processing]
    #Hint: math [Processing]
    #Hint: bitops [Processing]
    #Hint: algorithm [Processing]
    #Hint: unicode [Processing]
    #Hint: os [Processing]
    #Hint: pathnorm [Processing]
    #Hint: osseps [Processing]
    #Hint: posix [Processing]
    #Hint: times [Processing]
    #Hint: options [Processing]
    #Hint: typetraits [Processing]
    #Hint: torch_cpp [Processing]
    #Hint: tensors [Processing]
    #Hint: sequtils [Processing]
    #Hint: sets [Processing]
    #Hint: strformat [Processing]
    #Hint: tensor_ops [Processing]
    #Hint: autograd_macro [Processing]
    #Hint: autograd_backward [Processing]
    #Hint: nn [Processing]
    #Hint: modules [Processing]
    #Hint: init [Processing]
    #Hint: python_helpers [Processing]
    #Hint: functional [Processing]
    #SIGSEGV: Illegal storage access. (Attempt to read from nil?)
    

    test.nim:

    import torch
    import torch/[nn, optim]
    
    let inputs = torch.tensor([
      [0.0, 0.0],
      [0.0, 1.0],
      [1.0, 0.0],
      [1.0, 1.0],
    ])
    
    let targets = torch.tensor([
      [0.0],
      [1.0],
      [1.0],
      [0.0],
    ])
    
    let
      fc1 = nn.Linear(2, 4)
      fc2 = nn.Linear(4, 1)
      loss_fn = nn.MSELoss()
      optimizer = optim.SGD(fc1.parameters & fc2.parameters , lr = 0.01, momentum = 0.1)
    
    set_num_threads(1)
    
    when defined gperftools:
      discard ProfilerStart("test_xor.log")
    
    for i in 0 ..< 50000:
      optimizer.zero_grad()
    
      let predictions = inputs.fc1.relu.fc2.sigmoid
    
      let loss = loss_fn(predictions, targets)
      loss.backward()
      optimizer.step()
    
      if i mod 5000 == 0:
        print(loss)
    
    when defined gperftools:
      ProfilerStop()
    
    opened by singularperturbation 4
  • can't install with nimble

    can't install with nimble

    $ nim --version Nim Compiler Version 0.18.1 [Windows: amd64] Compiled at 2018-08-18 Copyright (c) 2006-2018 by Andreas Rumpf

    git hash: b5171f57ef00bffb12387d7daf3487c5e07645f9 active boot switches: -d:release

    $ nimble install nimtorch Prompt: nimtorch not found in any local packages.json, check internet for updated packages? [y/N] y Answer: Downloading Official package list Success Package list downloaded. Tip: 3 messages have been suppressed, use --verbose to show them. Error: Package not found.

    opened by retsyo 3
  • Cannot compile nimtorch tests on Windows 10

    Cannot compile nimtorch tests on Windows 10

    C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lC:\Users\vsagar200\work\bin\nim-0.19.0_x64\ATen-windows10-cpu\lib\ATen_cpu.lib
    C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lC:\Users\vsagar200\work\bin\nim-0.19.0_x64\ATen-windows10-cpu\lib\cpuinfo.lib
    collect2.exe: error: ld returned 1 exit status
    Error: execution of an external program failed: 'g++.exe   -o C:\Users\vsagar200\work\soft\nimtorch\tests\test_xor.exe  C:\Users\vsagar200\nimcache\test_xor_d\torch_test_xor.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_system.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\torch_torch.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\fragments_cpp.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_macros.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_tables.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_hashes.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_math.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_strutils.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_parseutils.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_bitops.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_algorithm.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_unicode.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_ospaths.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_winlean.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_dynlib.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\torch_torch_cpp.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_os.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_times.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_options.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_typetraits.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_strformat.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\torch_tensors.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_sequtils.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\stdlib_sets.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\torch_tensor_ops.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\torch_autograd_macro.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\torch_autograd_backward.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\torch_nn.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\torch_init.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\torch_python_helpers.cpp.o C:\Users\vsagar200\nimcache\test_xor_d\torch_optim.cpp.o  -LC:\Users\vsagar200\work\bin\nim-0.19.0_x64\ATen-windows10-cpu\lib -LC:\Users\vsagar200\work\bin\nim-0.19.0_x64\ATen-windows10-cpu\lib64 -lC:\Users\vsagar200\work\bin\nim-0.19.0_x64\ATen-windows10-cpu\lib\ATen_cpu.lib -lC:\Users\vsagar200\work\bin\nim-0.19.0_x64\ATen-windows10-cpu\lib\cpuinfo.lib '
    

    Although the ATEN path is correctly set. Tried on nim 0.18.1 and 0.19.0 the .lib files present at the same location the error is saying it cannot find.

    question 
    opened by eshitasagar 2
  • install Aten with nimtorch

    install Aten with nimtorch

    thanks for the library. are there any plans to have Aten distributed with nim-torch? This will make it easier to build command-line tools that depend on it.

    opened by brentp 1
  • [TODO] [offtopic] discussion regarding nimble limitation (from comments in #6)

    [TODO] [offtopic] discussion regarding nimble limitation (from comments in #6)

    moved to here the discussion started here https://github.com/fragcolor-xyz/nimtorch/issues/6#issuecomment-430511494 to keep each topic separate

    @sinkingsugar

    Nimble has a major flaw, which is it applies all the packages it has on every project you have by default. That's my major concern that easy can create a mess if not considered.

    I will give you an example exactly with nimtorch: Have nimtorch installed as nimble package Also work on the repository Did not run nimble develop Rename a file in the repository Forget to update the module import myrenamedfile into import newlocation/myrenamedfile Build will succeed yet will use import myrenamedfile from nimble this time..

    but it all works if you run nimble develop, right? I think that's expected and I don't see a limitation here (in the sense of making it impossible to do certain things). if you really feel something is ill-designed with nimble it really should be a bug report in https://github.com/nim-lang/nimble/issues/ otherwise it will never get fixed (if there's anything to fix).

    That being said, one possibility would be (and that's doable, not a fundamental flaw IMO): if you call nimble build inside a local package foo, nimble could remove from search path an installed package named foo

    opened by timotheecour 1
  • Add a Gitter chat badge to README.md

    Add a Gitter chat badge to README.md

    fragcolor-xyz/nimtorch now has a Chat Room on Gitter

    @sinkingsugar has just created a chat room. You can visit it here: https://gitter.im/nimtorch/Lobby.

    This pull-request adds this badge to your README.md:

    Gitter

    If my aim is a little off, please let me know.

    Happy chatting.

    PS: Click here if you would prefer not to receive automatic pull-requests from Gitter in future.

    opened by gitter-badger 0
  • Is this project still active

    Is this project still active

    Hi,

    I think a working binding to pytorch from nim could be very valuable to support the use of nim in data science. This project seems to be inactive for a long time now and it is not using the current version of pytorch - any chance that it will be updated?

    opened by bitstormFA 5
  • Question. Import model trained under a Python / Torch library.

    Question. Import model trained under a Python / Torch library.

    Would it be possible or even advisable to import a pth or pkl, which was trained using FastAI, into NimTorch, for the purpose of exposing in a backend written in Nim (for efficiency and speed)?

    opened by UNIcodeX 17
  • Add

    Add "install fragments" to the non-conda installation doc

    add nimble install fragments to this part of the readme As a beginner I wasted an hour trying to figure out what did I do wrong, turns out it was just a package error

    opened by mritunjaymusale 0
  • Error: expression 'step(optimizer)' has no type (or is ambiguous)

    Error: expression 'step(optimizer)' has no type (or is ambiguous)

    I am trying to use nimtorch (I am new to pytorch as well). I am struggling to run a first example.

    I have installed in Windows 10 like this:

    conda create -n aten -c fragcolor aten=2019.02.16.2841
    nimble install fragments
    nimble install torch@#head
    

    And then I tried to compile the code from here:

    import torch
    import torch/[nn, optim]
    
    let
      inputs = torch.tensor([[0.0, 0.0], [0.0, 1.0], [1.0, 0.0], [1.0, 1.0]])
      targets = torch.tensor([[0.0], [1.0], [1.0], [0.0]])
    
    let
      fc1 = nn.Linear(2, 4)
      fc2 = nn.Linear(4, 1)
      loss_fn = nn.MSELoss()
      optimizer = optim.SGD(fc1.parameters & fc2.parameters, lr = 0.01, momentum = 0.1)
    
    for i in 0 ..< 50000:
      optimizer.zero_grad()
    
      var predictions = fc1(inputs).relu()
      predictions = fc2(predictions).sigmoid()
    
      let loss = loss_fn(predictions, targets)
      loss.backward()
      discard optimizer.step()
    
      if i mod 5000 == 0:
        print(loss)
    

    I compile by doing:

    c:> conda activate aten
    c.> nim cpp ex01
    ....
    C:\Users\mantielero\Documents\src\torch\ex01.nim(22, 25) Error: expression 'step(optimizer)' has no type (or is ambiguous)
    

    which is the line:

    discard optimizer.step()
    

    What am I doing wrong?

    opened by mantielero 0
  • Nimble installation fails

    Nimble installation fails

    Its been a while since the last commit, pls dont tell me nimtorch is dead, its wonderful, and i want to start using it, and libraries like this would pump up nim's popularity, are you leaving it for a while but planning on taking it back or just completely abandoned?

    opened by RecruitMain707 6
Releases(v0.2.0)
Owner
Giovanni Petrantoni
Giovanni Petrantoni
Waymo motion prediction challenge 2021: 3rd place solution

Waymo motion prediction challenge 2021: 3rd place solution 📜 Technical report 🗨️ Presentation 🎉 Announcement 🛆Motion Prediction Channel Website 🛆

158 Jan 08, 2023
Used to record WKU's utility bills on a regular basis.

WKU水电费小助手 一个用于定期记录WKU水电费的脚本 Looking for English Readme? 背景 由于WKU校园内的水电账单系统时常存在扣费延迟的现象,而补扣的费用缺乏令人信服的证明。不少学生为费用摸不着头脑,但也没有申诉的依据。为了更好地掌握水电费使用情况,留下一手证据,我开源

2 Jul 21, 2022
Utilities and information for the signals.numer.ai tournament

dsignals Utilities and information for the signals.numer.ai tournament using eodhistoricaldata.com eodhistoricaldata.com provides excellent historical

Degerhan Usluel 23 Dec 18, 2022
OHLC Average Prediction of Apple Inc. Using LSTM Recurrent Neural Network

Stock Price Prediction of Apple Inc. Using Recurrent Neural Network OHLC Average Prediction of Apple Inc. Using LSTM Recurrent Neural Network Dataset:

Nouroz Rahman 410 Jan 05, 2023
Python Environment for Bayesian Learning

Pebl is a python library and command line application for learning the structure of a Bayesian network given prior knowledge and observations. Pebl in

Abhik Shah 103 Jul 14, 2022
UNION: An Unreferenced Metric for Evaluating Open-ended Story Generation

UNION Automatic Evaluation Metric described in the paper UNION: An UNreferenced MetrIc for Evaluating Open-eNded Story Generation (EMNLP 2020). Please

50 Dec 30, 2022
Teaching end to end workflow of deep learning

Deep-Education This repository is now available for public use for teaching end to end workflow of deep learning. This implies that learners/researche

Data Lab at College of William and Mary 2 Sep 26, 2022
A series of Python scripts to access measurements from Fluke 28X meters. Fluke IR Remote Interface required.

Fluke289_data_access A series of Python scripts to access measurements from Fluke 28X meters. Fluke IR Remote Interface required. Created from informa

3 Dec 08, 2022
Gesture recognition on Event Data

Event based Gesture Recognition Gesture recognition on Event Data usually involv

2 Feb 14, 2022
Code for the Interspeech 2021 paper "AST: Audio Spectrogram Transformer".

AST: Audio Spectrogram Transformer Introduction Citing Getting Started ESC-50 Recipe Speechcommands Recipe AudioSet Recipe Pretrained Models Contact I

Yuan Gong 603 Jan 07, 2023
Official implementation of the NeurIPS'21 paper 'Conditional Generation Using Polynomial Expansions'.

Conditional Generation Using Polynomial Expansions Official implementation of the conditional image generation experiments as described on the NeurIPS

Grigoris 4 Aug 07, 2022
AdaDM: Enabling Normalization for Image Super-Resolution

AdaDM AdaDM: Enabling Normalization for Image Super-Resolution. You can apply BN, LN or GN in SR networks with our AdaDM. Pretrained models (EDSR*/RDN

58 Jan 08, 2023
Self-Supervised Image Denoising via Iterative Data Refinement

Self-Supervised Image Denoising via Iterative Data Refinement Yi Zhang1, Dasong Li1, Ka Lung Law2, Xiaogang Wang1, Hongwei Qin2, Hongsheng Li1 1CUHK-S

Zhang Yi 72 Jan 01, 2023
Code from the paper "High-Performance Brain-to-Text Communication via Handwriting"

High-Performance Brain-to-Text Communication via Handwriting Overview This repo is associated with this manuscript, preprint and dataset. The code can

Francis R. Willett 306 Jan 03, 2023
PyTorch implementation of MICCAI 2018 paper "Liver Lesion Detection from Weakly-labeled Multi-phase CT Volumes with a Grouped Single Shot MultiBox Detector"

Grouped SSD (GSSD) for liver lesion detection from multi-phase CT Note: the MICCAI 2018 paper only covers the multi-phase lesion detection part of thi

Sang-gil Lee 36 Oct 12, 2022
Adversarial Framework for (non-) Parametric Image Stylisation Mosaics

Fully Adversarial Mosaics (FAMOS) Pytorch implementation of the paper "Copy the Old or Paint Anew? An Adversarial Framework for (non-) Parametric Imag

Zalando Research 120 Dec 24, 2022
Official implementation of paper "Query2Label: A Simple Transformer Way to Multi-Label Classification".

Introdunction This is the official implementation of the paper "Query2Label: A Simple Transformer Way to Multi-Label Classification". Abstract This pa

Shilong Liu 274 Dec 28, 2022
Official code for 'Weakly-supervised Video Anomaly Detection with Robust Temporal Feature Magnitude Learning' [ICCV 2021]

RTFM This repo contains the Pytorch implementation of our paper: Weakly-supervised Video Anomaly Detection with Robust Temporal Feature Magnitude Lear

Yu Tian 242 Jan 08, 2023
Semi-Supervised Semantic Segmentation with Cross-Consistency Training (CCT)

Semi-Supervised Semantic Segmentation with Cross-Consistency Training (CCT) Paper, Project Page This repo contains the official implementation of CVPR

Yassine 344 Dec 29, 2022
Learning from History: Modeling Temporal Knowledge Graphs with Sequential Copy-Generation Networks

CyGNet This repository reproduces the AAAI'21 paper “Learning from History: Modeling Temporal Knowledge Graphs with Sequential Copy-Generation Network

CunchaoZ 89 Jan 03, 2023