3

deepenetパッケージのdbn.dnn.train関数を使用して MNIST データセットをトレーニングしようとしています。タスクは分類です。次のコマンドを使用しています

dbn.deepnet <- dbn.dnn.train(train.image.data,train.image.labels,hidden=c(5,5))

私が直面している問題は次のとおりです。

1) ラベルは因子型ベクトルである必要があります。しかし、ラベルを因子として入力すると、関数は「yは行列またはベクトルでなければならない」というエラーを出します。そのため、ラベルを数値として使用しています。分類タスクの進め方

2) dbn.dnn.train の予測を行う機能とは何か。私は nn.predict を使用していますが、ドキュメントには、入力は関数 nn.train によってトレーニングされたニューラル ネットワークである必要があると記載されています (dbn.dnn.train は記載されていません)。出力はすべてのレコードで 0.9986 です

nn.predict(dbn.deepnet,train.image.data)
4

2 に答える 2

2

あなたがまだそれに取り組んでいるのか、それとも解決策を見つけたのかわかりませんが、1 /これを試してください:train.image.labels <- data.matrix(train.image.labels)

2/ ニューラル ネットワークが dbn.dnn.train によってトレーニングされている場合でも、nn.predict を使用します。

于 2015-05-24T17:56:59.113 に答える
1

As you know the input values for neural network better to be between 0 and 1. In "deepnet" package, unlike the nn.train function, for dbn.dnn.train you need to normalize the input yourself. Here is the complete code to load, train, and test.

#loading MNIST
setwd("path/to/MNIST/")
mnist <- load.mnist(".")
# the function to normalize the input values
normalize <- function(x) {
  return (x/255)
}
# standardization
train_x_n <-  apply(mnist$train$x, c(1,2),FUN = normalize)
test_x_n <- apply(mnist$test$x, c(1,2),FUN = normalize)
#training and prediction
dnn <- dbn.dnn.train(train_x_n, mnist$train$yy, hidden = c(100, 70, 80), numepochs = 3, cd = 3)
err.dnn <- nn.test(dnn, test_x_n, mnist$test$yy)
dnn_predict <- nn.predict(dnn, test_x_n)
# test the outputs
print(err.dnn)
print(dnn_predict[1,])
print(mnist$test$y[1])

Outout:

> err.dnn
[1] 0.0829
> dnn_predict[1,]
[1] 7.549055e-04 1.111647e-03 1.946491e-03 7.417489e-03 3.221340e-04 7.306264e-04 4.088365e-05 9.944441e-01 8.953903e-05
[10] 9.085863e-03
> mnist$test$y[1]
[1] 7
于 2016-06-16T15:25:17.297 に答える