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 で動作することに注意してください。新しいバージョンは、インポートされたモジュールをサポートしていません。