当前位置: 首页 > 面试题库 >

scipy convolve2d输出错误的值

东郭腾
2023-03-14
问题内容

这是我用来检查convolve2d正确性的代码

import numpy as np
from scipy.signal import convolve2d

X = np.random.randint(5, size=(10,10))
K = np.random.randint(5, size=(3,3))
print "Input's top-left corner:"
print X[:3,:3]
print 'Kernel:'
print K

print 'Hardcording the calculation of a valid convolution (top-left)'
print (X[:3,:3]*K)
print 'Sums to'
print (X[:3,:3]*K).sum()
print 'However the top-left value of the convolve2d result'
Y = convolve2d(X, K, 'valid')
print Y[0,0]

在我的计算机上,这导致以下结果:

Input's top-left (3x3) corner:
[[0 0 0]
 [1 1 2]
 [1 3 0]]
Kernel:
[[4 1 1]
 [0 3 3]
 [2 1 2]]
Hardcording the calculation of a valid convolution (top-left)
[[0 0 0]
 [0 3 6]
 [2 3 0]]
Sums to
14
However the top-left value of the convolve2d result
10

背景故事 :我一直在调试convnet库,并且渐变总是错误的。几周后,我得出结论,一切应该正常,因此我用裸手检查了convolve2d函数


问题答案:

表达式(X[:3,:3]*K).sum()不正确。对于卷积,您必须反转内核,例如(X[:3,:3]*K[::-1,::-1]).sum()



 类似资料:
  • 我正在尝试制作一个程序,让很多人进入ArrayList,然后从中随机选择一个名字。代码运行正常,但请求名称输入的字符串在第一次运行时会显示两次。知道为什么会这样吗? 我希望它显示的内容:输入名称:。。。。。。 显示内容:输入名称:输入名称:。。。。。。

  • 问题内容: 我正在使用Python编写一些加密算法,但是我以前从未使用过Python。 首先,看一下这段代码,然后我将解释这个问题, x和y的值为, 我不明白代码的第三行。为了理解第三行,我不得不研究函数,我遇到了这个问题, zip函数帮助元组 根据这个问题的答案,代码, 将输出, 但是当我尝试打印时, 我得到这个输出, 为什么我的输出与原始输出不同? 问题答案: 在Python 3中返回一个迭代

  • 问题内容: 为什么我从以下代码中获得“ AAAAAAAAA”而不是“ 1A234A567”: 任何想法? 问题答案: 函数以正则表达式为参数。和正则表达式“。” 表示“任何字符”。您必须对其进行转义以指定它是您想要的字符:

  • 我有一个使用ExecuteStreamCommand处理器运行一些shell脚本的NiFi流,而ExecuteStreamCommand的输出是不正确的。 下面是一个如果流的演示: https://youtu.be/4e00rzerjsq

  • 下面是一个小代码,我正试图计算softmax。它适用于单个阵列。但是如果数量更大,比如1000等,就会爆炸 我收到一个错误 运行时警告: 在 exp 中遇到溢出 运行你的代码 softmax1 = np.exp(x)/np.sum(np.exp(x))

  • 问题内容: 在使用树集时,我发现了非常奇怪的行为。 根据我的理解,以下程序应打印两条相同的行: 但奇怪的是它打印: 我无法理解-为什么树集的行为如此? 问题答案: 发生这种情况是因为SortedSet的Comparator用于排序,但是removeAll依赖于每个元素的方法。从SortedSet文档中: 请注意,如果排序集要正确实现接口,则排序集(无论是否提供显式比较器)所维护的顺序必须 与equ

  • 我试图做一个java程序,但我有一个问题与输出。