macosx加速框架在NaN中的矩阵乘法结果

macosx加速框架在NaN中的矩阵乘法结果,macos,numpy,nan,caffe,blas,Macos,Numpy,Nan,Caffe,Blas,当我对ndarray使用numpy.dot时,发生了一个奇怪的现象。以下是安装在我的MacOSX上的numpy的信息: {'define_macros': [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)], 'extra_compile_args': ['-msse3', '-I/System/Library/Frameworks/vecLib.framework/Headers'], 'extra_link_args': ['-Wl,-framew

当我对
ndarray
使用
numpy.dot
时,发生了一个奇怪的现象。以下是安装在我的MacOSX上的
numpy
的信息:

{'define_macros': [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)],
 'extra_compile_args': ['-msse3',
 '-I/System/Library/Frameworks/vecLib.framework/Headers'],
 'extra_link_args': ['-Wl,-framework', '-Wl,Accelerate']}
假设有两个矩阵
W(m,k)
X(k,n)
,和
y=W.dot(X)
,我发现在
y
中有一些位置是
NaN
。例如:
y[i][j]==Nan
。然后我执行以下操作:

a = W[i].dot(X[:,j])
我发现
a
不是
Nan
!此外,我还发现,在每个实验中,
Nan
在y中的位置是不同的

我使用了相同的
W
X
并在另一台PC上使用
Ubuntu14.04
执行该操作,该PC中的
numpy
信息为:

{'define_macros': [('ATLAS_INFO', '"\\"3.10.1\\""')],
 'include_dirs': ['/usr/include/atlas'],
 'language': 'c',
 'libraries': ['f77blas', 'cblas', 'atlas'],
 'library_dirs': ['/usr/lib/atlas-base']}
y=W.dot(X)
正常,其中没有任何
NaN

我知道如何实现
numpy.dot
,并且为双精度矩阵乘以矩阵的情况调用
cblas_dgemm()
那么MacOSX加速框架中是否存在任何缺陷??



矩阵
W
caffe.convolutionLayer
中的权重块,而
X
是该层的输入。我还在MacOSX上使用了
caffe
,它使用了
Accelerate.framework
作为矩阵乘法库。这种奇怪的事情也发生了。

如果矩阵包含零和inf/-inf,那么乘积zero*inf似乎被定义为nan。BLAS库中似乎存在不一致,我的(libblas3)有时会忽略NaN值,并对不同大小的矩阵给出不同的结果。比较不同于AxB==trans(trans(A)*trans(B))的位置,其中A和B是矩阵,trans()是矩阵的转置。

如果矩阵包含零和inf/-inf,则乘积zero*inf似乎定义为nan。BLAS库中似乎存在不一致,我的(libblas3)有时会忽略NaN值,并对不同大小的矩阵给出不同的结果。比较不同于AxB==trans(trans(A)*trans(B))的位置,其中A和B是矩阵,trans()是矩阵的转置。

你是否有机会验证是否有被零除的情况?@HarshWardhan我做的实验只包含矩阵乘法,根本没有除法。你有没有,有没有机会,验证是否有除法?@HarshWardhan我做的实验只包含矩阵乘法,根本没有除法。