R
1img = load.image( "box.jpg" ) 2df = as.data.frame( img ) 3df = df[3:4] 4colnames(df) <- c("input","output") 5write.csv(df,"test.csv",row.names=FALSE) 6 7img = load.image( "box2.jpg" ) 8df = as.data.frame( img ) 9df = df[3:4] 10colnames(df) <- c("input","output") 11write.csv(df,"training.csv",row.names=FALSE) 12 13#バックプロパゲーションによるnnetの学習 14library(nnet) 15train <- read.csv("test.csv",h=T) 16train 17plot(train) 18valid <- read.csv("training.csv",h=T) 19valid 20plot(valid) 21 22#size:中間層、maxit:くりかえし回数 size number of units in the hidden layer. Can be zero if there are skip-layer units. 23#それから,predの"type"で出力形式を指定します.通常は"class"でよい 24#predic.nnetのhelpより If type = "raw", the matrix of values returned by the trained network; 25#if type = "class", the corresponding class 26#(which is probably only useful if the net was generated by nnet.formula). weights: 10 27 28sin1 <- nnet(data=train,output~input,size=3,maxit=2000); 29yosoku1 <- predict(sin1,valid,type="raw") 30points(train,type="b",col=2,pch=16) 31points(valid$input,yosoku1,type="b",col=4,pch=20) 32lines(valid$input,yosoku1,col=4)
一応こんな感じで、他サイトのコード組み合わせながら、2つの画像から取り出したデータから無理やりグラフを作り、testのグラフをtrainingのグラフを参考に発展させた?グラフを描くプログラムを作ったのですが、実際やりたいのは、2画像の類似度判定です、グラフは描かなくて良いのです、どうすれば類似度が数値で出せますでしょうか?
nnetの中身がよく分からないのですが(中の見方も)、引数がtest.dataのみであるから各1入力値に対して、複数の重みで重み付け、活性化、1出力値に出力してるんですかね、
ならpredictは。。? 引数はtestとtrainingの2つであるから、見本との誤差から誤差伝播してなんやらやってるんでしょうか?
ならnnetとpredictは互いに連関してないといけないと思うのですが、nnetのあとにpredictがあるし、何が何やら。。
単に誤差を求めるなら、testとtrainingのデータリストの差分でできることは分かりましたが。。
あなたの回答
tips
プレビュー