1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

[Python] Implementing 2D-convolution in python

Discussão em 'Python' iniciado por Stack, Setembro 16, 2025.

  1. Stack

    Stack Membro Participativo

    Im writing a project about convolutional neural network's and I need to implement an example of a convolution with a given input which is a 3x4-matrix and a 2x2 kernel. [​IMG]

    I already have the answer for this equation, which is the picture under.
    [​IMG]

    I have written this code where the output isn't right and I can't figure out what is wrong. Im sorry if this is the wrong format, I hope someone can help!

    import numpy as np

    def convolution(I,k):
    #sikre dig først at de givende matricer er 2-dimensionelle
    assert(I.ndim == 2)
    assert(k.ndim == 2)

    #Find størrelsen af de givende matricer rækker m og søjler n
    I_x = I.shape[1]
    I_y = I.shape[0]
    k_x = k.shape[1]
    k_y = k.shape[0]

    # find herefter størrelsen af rækker og søjler i output-matrixen
    Output_x = I_x - k_x + 1
    Output_y = I_y - k_y + 1

    #Skab nu en tom output-matrix
    Output = np.zeros((Output_y, Output_x))

    #Find først størrelsen af output matrixen
    for m in range(Output_y):
    for n in range(Output_x):
    #"Scan" nu kernel-matrixen over input-matrixen og find elementerne i output-matrixen.
    for i in range(k_y):
    for j in range(k_x):
    if (m-i >= 0) and (m-i < I_y) and (n-j >= 0) and (n-j < I_x):
    Output[m,n] = Output[m,n] + k[i,j]*I[i-m,j-n]

    return Output

    if __name__=="__main__":
    Input_data = np.array([[2,3,6,9],
    [1,9,5,1],
    [4,7,8,5]])

    kernel = np.array([[1,2],
    [3,1]])

    print(convolution(Input_data, kernel))

    Continue reading...

Compartilhe esta Página