矩阵乘法通过使用Mac osx Accelerate框架在NaN中生成

时间:2016-03-01 04:15:08

标签: macos numpy nan caffe blas

当我numpy.dot使用ndarray时,发生了一个奇怪的现象。以下是我的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中的位置是每个实验之间的差异。

我使用相同的WX并在另一台电脑上使用Ubuntu14.04执行该操作,该电脑中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 Accelerate框架中是否存在任何错误?

矩阵Wcaffe.convolutionLayer中的权重blob,X是此图层的输入。我还在我的MacOSX上使用caffe,它使用Accelerate.framework作为矩阵乘法库。也发生了奇怪的事情。

0 个答案:

没有答案