GithubHelp home page GithubHelp logo

Comments (5)

stevenabreu7 avatar stevenabreu7 commented on July 24, 2024

Hi there, thanks a lot for catching this! Could you add a simple test input that gives you this failure? And is the shape variable a list, or a single int? I don't immediately see why it would be a list, since we make sure that it would be a np.array here:

return np.array([tuple])

from nir.

chanokin avatar chanokin commented on July 24, 2024

I just looked again and the input_shape type is no int nor list nor tuple it's a lovely torch.Size type. I would have thought that type would get bundled with the Sequence type in Line 91?

I think this comes from

shape = input_shape[i]

when padding == "same" and there is no conversion to np.array([input_shape[i]])

from nir.

stevenabreu7 avatar stevenabreu7 commented on July 24, 2024

I made a PR to fix this, see #101, could you please confirm that it works for you now? Then I will merge it. Thanks again for your help!

from nir.

chanokin avatar chanokin commented on July 24, 2024

Hi, sadly, it's still no good.

Here's a minimal test

from nir.ir.graph import NIRGraph
from nir.ir.conv import Conv2d
from nir.ir.neuron import LI

import torch


def test_nir_conv2d_same():
    # Create a NIR Network
    conv_weights = torch.tensor([[[1.0, 1.0, 1.0], [1.0, 1.0, 1.0], [1.0, 1.0, 1.0]]])
    li_tau = torch.tensor([0.9, 0.8])
    li_r = torch.tensor([1.0, 1.0])
    li_v_leak = torch.tensor([0.0, 0.0])

    nir_network = NIRGraph.from_list(
        Conv2d(
            input_shape=torch.Size((3, 3)),
            weight=conv_weights,
            stride=1,
            padding="same",
            dilation=1,
            groups=1,
            bias=torch.tensor([0.0] * 9),
        ),
        LI(li_tau, li_r, li_v_leak),
    )

I think that's because _index_tuple still returns a pure int in

NIR/nir/ir/utils.py

Lines 97 to 98 in df2f1fc

if isinstance(tuple, np.ndarray) or isinstance(tuple, Sequence):
return tuple[index]

I don't know what the design phylosophy is here but I assume you could return a np.array([tuple[index]])

from nir.

Jegp avatar Jegp commented on July 24, 2024

Thank you so much for the insight @chanokin. You're indeed right that we should be returning a Numpy number. And there was an additional bug in that it assumed numpy types and not PyTorch arrays or the like. I expanded the function and added some tests to make sure it works.

Please don't hesitate to reopen if anything is broken. And ping us if you'd like a release. Otherwise, I'll wait a few weeks until the next exciting new features drop ;-)

from nir.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.