私はPython 2.7とCythonでUbuntu 16.04に問題があります。 私はcs231nコース(畳み込みニューラルネットワーク)からコードを実行しようとしています。 しかし、唯一の機能col2im_6d_cythonは機能しません。エラーは次のとおりです。Python 2.7とCython:グローバル名col2im_6d_cythonが定義されていません
NameError: global name 'col2im_6d_cython' is not defined
col2im_6d_cythonがim2col_cython.pyx
で定義されている機能:
def col2im_6d_cython(np.ndarray[DTYPE_t, ndim=6] cols, int N, int C, int H, int W,
int HH, int WW, int pad, int stride):
cdef np.ndarray x = np.empty((N, C, H, W), dtype=cols.dtype)
cdef int out_h = (H + 2 * pad - HH)/stride + 1
cdef int out_w = (W + 2 * pad - WW)/stride + 1
cdef np.ndarray[DTYPE_t, ndim=4] x_padded = np.zeros((N, C, H + 2 * pad, W + 2 * pad),
dtype=cols.dtype)
col2im_6d_cython_inner(cols, x_padded, N, C, H, W, HH, WW, out_h, out_w, pad, stride)
if pad > 0:
return x_padded[:, :, pad:-pad, pad:-pad]
return x_padded
col2im_6d_cythonから呼び出されたファイルがあるfast_layers.py:
from cs231n.im2col_cython import col2im_cython, im2col_cython
from cs231n.im2col_cython import col2im_6d_cython
def conv_backward_strides(dout, cache):
x, w, b, conv_param, x_cols = cache
stride, pad = conv_param['stride'], conv_param['pad']
N, C, H, W = x.shape
F, _, HH, WW = w.shape
_, _, out_h, out_w = dout.shape
db = np.sum(dout, axis=(0, 2, 3))
dout_reshaped = dout.transpose(1, 0, 2, 3).reshape(F, -1)
dw = dout_reshaped.dot(x_cols.T).reshape(w.shape)
dx_cols = w.reshape(F, -1).T.dot(dout_reshaped)
dx_cols.shape = (C, HH, WW, N, out_h, out_w)
dx = col2im_6d_cython(dx_cols, N, C, H, W, HH, WW, pad, stride)
return dx, dw, db
c ol2im_cythonとim2col_cythonは正常に動作しますが、col2im_6d_cythonのみが機能しません。
Cythonのインストールに問題があるようです。私は実行してインストールしている:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
import numpy
extensions = [
Extension('im2col_cython', ['im2col_cython.pyx'],
include_dirs = [numpy.get_include()]
),
]
setup(
ext_modules = cythonize(extensions),
)
とCythonをインストールするとき、私は警告していた:のpython setup.pyにbuild_ext --inplace
setup.pyがある
Warning: Extension name 'im2col_cython' does not match fully qualified name 'cs231n.im2col_cython' of 'im2col_cython.pyx'
running build_ext
なぜcol2im_6d_cythonが機能しないのですか?それを修正する方法はありますか?
ありがとうございました!
これはあなたには役立ちませんが、ここに掲載されているcs231コースで同様の問題を抱えている人々の長いリストがあり、実際の解決策が得られていません。 – DavidW