Puzzle 11: conv_spec does not implement convolution · Issue #35 · srush/GPU-Puzzles · GitHub
Skip to content

Puzzle 11: conv_spec does not implement convolution #35

Open

Description

@BrandonConder

The conv_spec function does not implement convolution:

def conv_spec(a, b):
    out = np.zeros(*a.shape)
    len = b.shape[0]
    for i in range(a.shape[0]):
        out[i] = sum([a[i + j] * b[j] for j in range(len) if i + j < a.shape[0]])
    return out

One of the inputs should be index-reversed (see wikipedia)

We can also confirm the error using numpy.convolve

np.convolve(a, b, mode='same')

Test 1 output:

array([ 0,  1,  4,  7, 10, 13])

which conflicts with the conv_spec output:

Spec : [ 5.  8. 11. 14.  5.  0.]

Test 2 output:

array([ 0,  1,  4, 10, 16, 22, 28, 34, 40, 46, 52, 58, 64, 70, 76])

which also conflicts with the conv_spec output:

Spec : [14. 20. 26. 32. 38. 44. 50. 56. 62. 68. 74. 80. 41. 14.  0.]

Activity

  1. srush commented on Jun 21, 2024

    @srush
    Owner

    meh, it's roughly a convolution up to some corner case details.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions