2016-07-17 7 views
2

저는 최근 Windows 10 및 Python 3.5에서 GPU를 지원하는 mxnet (python 패키지)을 설치했습니다. 몇 가지 예제를 통해 실행하고 그들은 잘 작동하는 것..csv 교육 데이터를 mxnet의 길쌈 신경 네트워크에 어떻게 공급할 수 있습니까?

나는 이미 Rx에서 Mxnet을 사용했지만 스타일 머신 학습 패키지를 배우고 Python 딥 학습 패키지에 익숙하지 않은 나는 scikit-learn에 익숙하다. .csv training 데이터를 입력하는 방법을 이해하는 데 어려움을 겪고있다. 모델에.

간단한 CNN 이미지를 제공하고 싶습니다. 이미지는 28x28 픽셀이며 .csv에 병합 된 배열로 저장됩니다. 두 개의 .csv 파일이 있는데 하나는 교육용이고 다른 하나는 테스트 용입니다. 총 10 개 라벨 및 훈련 세트/테스트 세트에서 주위 300분의 1,000 이미지가 있습니다

label, pixel1, pixel2, ..., pixel784 
0,... 
1,... 

: 각 .CSV 파일은 다음과 같은 구조를 가지고 있습니다. BTW R 거기에 (내가 R에 mxnet에 사용 된 것과 유사하다이 방법을 사용하고

import mxnet as mx 
import pandas as pd 
import numpy as np 
import os 

path = "C://users//me//data" 
os.chdir(path) 

df_train = pd.read_csv("train_28.csv") 
df_test = pd.read_csv("test_28.csv") 

keys = ['pixel.'+str(i) for i in range(1,785)] 

X_train = df_train[keys].get_values().T 
X_train = X_train.reshape((1200,28,28,1)) 
y_train = df_train['label'].get_values().reshape((1200,1)) 
#y_train = y_train.reshape((28,28,1,1200)) 



data = mx.symbol.Variable('data') 

# First conv layer 
conv1 = mx.symbol.Convolution(data=data, kernel=(5,5), num_filter=20) 
tanh1 = mx.symbol.Activation(data=conv1, act_type="tanh") 
pool1 = mx.symbol.Pooling(data=tanh1, pool_type="max", 
           kernel=(2,2), stride=(2,2)) 

# Second conv layer 
conv2 = mx.symbol.Convolution(data=pool1, kernel=(5,5), num_filter=50) 
tanh2 = mx.symbol.Activation(data=conv2, act_type="tanh") 
pool2 = mx.symbol.Pooling(data=tanh2, pool_type="max", 
           kernel=(2,2), stride=(2,2)) 

# First fully connected 
flatten = mx.symbol.Flatten(data=pool2) 
fc1 = mx.symbol.FullyConnected(data=flatten, num_hidden=500) 
tanh3 = mx.symbol.Activation(data=fc1, act_type="tanh") 
# second fullc 
fc2 = mx.symbol.FullyConnected(data=tanh3, num_hidden=10) 
# loss 
lenet = mx.symbol.SoftmaxOutput(data=fc2, name='softmax')        

device = mx.gpu()        

model = mx.model.FeedForward.create(lenet, 
            X = X_train, 
            y = y_train, 
            ctx = device, 
            num_epoch = 30) 

: 나는 모델을 데이터를로드하고 훈련하는 다음 코드를 사용하고

[16:54:11] D:\chhong\mxnet\dmlc-core\include\dmlc/logging.h:235: [16:54:11] d:\chhong\mxnet\src\operator\./convolution-inl.h:347: Check failed: ksize_x <= dshape[3] && ksize_y <= dshape[2] kernel size exceed input 
Traceback (most recent call last): 
    File "C:\Users\Me\Desktop\esempio_lenet.py", line 57, in <module> 
    num_epoch = 30) 
    File "C:\Users\Me\Anaconda3\lib\site-packages\mxnet-0.7.0-py3.5.egg\mxnet\model.py", line 901, in create 
    eval_batch_end_callback=eval_batch_end_callback) 
    File "C:\Users\Me\Anaconda3\lib\site-packages\mxnet-0.7.0-py3.5.egg\mxnet\model.py", line 745, in fit 
    self._init_params(dict(data.provide_data+data.provide_label)) 
    File "C:\Users\Me\Anaconda3\lib\site-packages\mxnet-0.7.0-py3.5.egg\mxnet\model.py", line 485, in _init_params 
    arg_shapes, _, aux_shapes = self.symbol.infer_shape(**input_shapes) 
    File "C:\Users\Me\Anaconda3\lib\site-packages\mxnet-0.7.0-py3.5.egg\mxnet\symbol.py", line 453, in infer_shape 
    return self._infer_shape_impl(False, *args, **kwargs) 
    File "C:\Users\Me\Anaconda3\lib\site-packages\mxnet-0.7.0-py3.5.egg\mxnet\symbol.py", line 513, in _infer_shape_impl 
    ctypes.byref(complete))) 
    File "C:\Users\Me\Anaconda3\lib\site-packages\mxnet-0.7.0-py3.5.egg\mxnet\base.py", line 77, in check_call 
    raise MXNetError(py_str(_LIB.MXGetLastError())) 
mxnet.base.MXNetError: InferShape Error in convolution0: [16:54:11] d:\chhong\mxnet\src\operator\./convolution-inl.h:347: Check failed: ksize_x <= dshape[3] && ksize_y <= dshape[2] kernel size exceed input 

그리고 내가 뭘 잘못 알아낼 수 없습니다 : 그러나 나는) 내가 ... 더 나은 공연을 위해 파이썬을 사용할 필요가 R에 GPU를 사용할 수 없습니다 그러나 나는 다음과 같은 오류가 발생하고, 완벽하게 작동합니다. 누군가가이 오류에 대해 알려주고 위와 같은 구조로 .csv 파일을로드하고 mxnet 모델을 교육하는 방법에 대한 명확한 지침을 알려주십시오. 설명서를 살펴 보았지만 .csv 파일을 올바르게로드하는 방법을 스스로 알 수는 없었습니다 ...

이러한 .csv 파일을로드하는 절차를 요청하는 이유는 제가 주로 다룹니다. 그 형식으로 데이터를 저장하고 이러한 .csv 파일을 사용하여 폴더에 대해 스크립트를 실행하고 심층 컨볼 루션 신경 네트워크를 학습하는 데 사용할 준비가되어있는 것은 매우 중요합니다.

내가 작성한 예제 코드를 재현하려면 train 및 test .csv 파일 집합을 here 사용할 수 있어야합니다.

이 일치하면

답변

3

문제를 감사합니다 : mxnet 번째 차원

X_train = X_train.reshape((1200,28,28,1)) 

은 피쳐 맵을, 세 번째와 네 번째 크기는 폭과 높이가 있지만, 그것이 있어야하므로 :

X_train = X_train.reshape((1200,1,28,28)) 
+1

고맙다. 내가 직면 한 문제가 해결되었습니다. 그러나 나는 MXnet과 관련하여 다른 문제를 계속 겪었으며 Python을 사용하여 tensorflow로 이동하기로 결정했습니다. MXnet과 비교하여 훨씬 더 직관적 인 문서를 찾을 수 있기 때문입니다. 말하자면, 여러분이나 다른 누군가가 MXnet에서 좀 더 빛을 발할 수있는 튜토리얼이나 리소스를 제안 할 수 있다면, 나는 읽을 것이 기쁩니다. – mickkk

관련 문제