1

Python でニューラル ネットワークを実装しようとしています。これは私たちのコードです:

import cv
from opencv.cv import *
from opencv.highgui import *
from opencv.ml import *

def trainMachine():
    ann = CvANN_MLP()
    global ann
    fin=open("train.txt","r")
    train_sample_count=int(fin.readline())
    print "Found training file with ",train_sample_count," examples"
    trainData=cvCreateMat(train_sample_count,2,CV_32FC1)
    trainClasses=cvCreateMat(train_sample_count,1,CV_32FC1)
    sampleWts=cvCreateMat(train_sample_count,1,CV_32FC1)
    neuralLayers=cvCreateMat(4,1,CV_32SC1)
    trainData1=cvGetRows(trainData,0,train_sample_count)
        trainClasses1=cvGetRows(trainClasses,0,train_sample_count)
        sampleWts1=cvGetRows(sampleWts,0,train_sample_count)
        neuralLayers1=cvGetRows(neuralLayers,0,4)
    cvSet1D(neuralLayers1,0,cvScalar(2))
        cvSet1D(neuralLayers1,1,cvScalar(3))
        cvSet1D(neuralLayers1,2,cvScalar(3))
        cvSet1D(neuralLayers1,3,cvScalar(1))
    td=list()
    for i in range(train_sample_count):
        line = fin.readline().split()
        td.append(list())
        for num in line:
            td[i].append(float(num))
    for i in range(0,train_sample_count):
        cvSetReal2D(trainData1,i,0,td[i][0])
        cvSetReal2D(trainData1,i,1,td[i][1])
        cvSet1D(trainClasses1,i,cvScalar(td[i][2]))
        cvSet1D(sampleWts1,i,cvScalar(1))
    ann.create(neuralLayers)
    criter=cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,100000,0.001)
    params=CvANN_MLP_TrainParams(criter,0,0.01,0.05)
    ann.train(trainData,trainClasses,sampleWts,0,params)

trainmachine()

しかし、エラーが発生しています:

Traceback (most recent call last):
  File "ml.py", line 58, in <module>
    main()
  File "ml.py", line 52, in main
    trainMachine();
  File "ml.py", line 39, in trainMachine
    ann.train(trainData,trainClasses,sampleWts,0,params)
  File "/usr/lib/pymodules/python2.6/opencv/ml.py", line 1310, in train
    def train(self, *args): return _ml.CvANN_MLP_train(self, *args)
NotImplementedError: Wrong number of arguments for overloaded function 'CvANN_MLP_train'.
  Possible C/C++ prototypes are:
    train(CvANN_MLP *,CvMat const *,CvMat const *,CvMat const *,CvMat const *,CvANN_MLP_TrainParams,int)
    train(CvANN_MLP *,CvMat const *,CvMat const *,CvMat const *,CvMat const *,CvANN_MLP_TrainParams)
    train(CvANN_MLP *,CvMat const *,CvMat const *,CvMat const *,CvMat const *)
    train(CvANN_MLP *,CvMat const *,CvMat const *,CvMat const *)

指定されたすべての C++ プロトタイプを試しました。しかし、まだエラーがあります。

実際に、C++ で動作するニューラル ネットワークの実装を Python に移植しようとしています。問題は、ニューラル ネットワークのトレーニングに使用される train 関数にあります。

これは C++ ソース コードです: neuro.cpp

これに対する解決策はありますか?または、Pythonで使用する関数のプロトタイプまたは名前が異なる場合は、ご協力ください。

コードは Python v2.6 および OpenCV v2.1 で動作することに注意してください。新しいバージョンは、インポートされたモジュールをサポートしていません。

4

0 に答える 0