Even though I defined the method, the method is still not recognised.
Following are the two functions defined.
@resumable function iterate_regions(self::Conv13, image)
h, w = size(image)
for i in 1:h-1
for j in 1:w-1
im_region = image[i:(i+3), j:(j+3)]
@yield im_region, i , j
end
end
end
function forward(self::Conv13, input)
self.last_input = input
h, w = size(input)
output = zeros(Float64, (h - 2, w - 2, self.num_filters))
for (im_region, i, j) in iterate_regions(self, input)
output[i, j] = sum(im_region * self.filters, dims=(1,2))
end
return output
end
Now when I call the forward, just for checking the function, by giving it the struct instance as well as a 2-D array, it gives an unusual error.
forward(Conv::Conv3x3, convert(Array{Float64},train_images[:,:,1]))
MethodError: no method matching *(::Array{Float64,2}, ::Array{Float64,3})
Closest candidates are:
*(::Any, ::Any, !Matched::Any, !Matched::Any…) at operators.jl:529
*(!Matched::PyObject, ::Any) at C:\Users\dishant.julia\packages\PyCall\zqDXB\src\pyoperators.jl:13
*(::Union{DenseArray{T,2}, Base.ReinterpretArray{T,2,S,A} where S where A<:Union{SubArray{T,N,A,I,true} where I<:Union{Tuple{Vararg{Real,N} where N}, Tuple{AbstractUnitRange,Vararg{Any,N} where N}} where A<:DenseArray where N where T, DenseArray}, Base.ReshapedArray{T,2,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses…
.
.
.
Stacktrace:
[1] forward(::Conv3x3, ::Array{Float64,2}) at .\In[16]:9
[2] top-level scope at In[26]:3
And even the stack trace shows that the values passed are correct. I don’t know why it is not able to find forward.