をリスナーをキャストするので、私に簡単に行くことができません。 は、私がdl4jでの作業は初めて午前、コレクションにDL4J
私はコードが正常に動作しなければならないimport org.datavec.api.records.reader.RecordReader;
import org.datavec.api.records.reader.impl.csv.CSVRecordReader;
import org.datavec.api.split.FileSplit;
import org.deeplearning4j.datasets.datavec.RecordReaderDataSetIterator;
import org.deeplearning4j.nn.api.OptimizationAlgorithm;
import org.deeplearning4j.nn.conf.MultiLayerConfiguration;
import org.deeplearning4j.nn.conf.NeuralNetConfiguration;
import org.deeplearning4j.nn.conf.Updater;
import org.deeplearning4j.nn.conf.layers.DenseLayer;
import org.deeplearning4j.nn.conf.layers.OutputLayer;
import org.deeplearning4j.nn.multilayer.MultiLayerNetwork;
import org.deeplearning4j.nn.weights.WeightInit;
import org.deeplearning4j.optimize.listeners.ScoreIterationListener;
import org.nd4j.linalg.api.ndarray.INDArray;
import org.nd4j.linalg.dataset.DataSet;
import org.nd4j.linalg.dataset.api.iterator.DataSetIterator;
import org.nd4j.linalg.lossfunctions.LossFunctions;
import org.deeplearning4j.eval.Evaluation;
import java.io.File;
import java.util.Collection;
public class MLPClassifierLinear
{
public static void main(String[] args) throws Exception
{
int seed = 123;
double learnRate = 0.01;
int batchSize = 50;
int nEpochs = 30;
int numInputs = 2;
int numOutputs = 2;
int numHiddenNodes = 20;
int labelField = 0;
int numOfLabels = 2;
//Load Training Data
RecordReader rr = new CSVRecordReader();
rr.initialize(new FileSplit(new File("C:\\Users\\Oria\\MLP\\linear_data_train.csv")));
DataSetIterator trainIter = new RecordReaderDataSetIterator(rr, batchSize,0,2);
//Load Testing Data
RecordReader rrTest = new CSVRecordReader();
rrTest.initialize(new FileSplit(new File("C:\\Users\\Oria\\MLP\\linear_data_eval.csv")));
DataSetIterator testIter = new RecordReaderDataSetIterator(rrTest, batchSize,0,2);
MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
.seed(seed)
.iterations(1)
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)
.learningRate(learnRate)
.updater(Updater.NESTEROVS).momentum(0.9)
.list()
.layer(0, new DenseLayer.Builder()
.nIn(numInputs)
.nOut(numHiddenNodes)
.weightInit(WeightInit.XAVIER)
.activation("relu")
.build())
.layer(1, new OutputLayer.Builder(LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD)
.weightInit(WeightInit.XAVIER)
.activation("softmax")
.nIn(numHiddenNodes)
.nOut(numOutputs)
.build())
.pretrain(false).backprop(true).build();
MultiLayerNetwork model = new MultiLayerNetwork(conf);
model.init();
model.setListeners(new ScoreIterationListener(10));
for(int i = 0; i < nEpochs; i++)
model.fit(trainIter);
System.out.println("Evaluate model.......");
Evaluation eval = new Evaluation(numOutputs);
while(testIter.hasNext())
{
DataSet t = testIter.next();
INDArray features = t.getFeatureMatrix();
INDArray lables = t.getLabels();
INDArray predicted = model.output(features,false);
eval.eval(lables,predicted);
}
System.out.println(eval.stats());
}
}
次の簡単なプログラムを書きました。これはdl4jのよく知られたチュートリアルであるhttps://www.youtube.com/watch?v=8EIBIfVlgmU&t=1063sのコピーです。
しかし、コードはコンパイルされません。モデルにエラーが発生しました.SetListenerの行に、 "MultiLayerNetworkタイプのメソッドsetListeners(Collection)が引数(ScoreIterationListener)に適用されません"
"model.setListeners((Collection)new ScoreIterationListener(10)); "コンパイルエラーは消えますが、代わりにランタイムエラーが発生します。 "スレッド"のメイン "java.lang.ClassCastException例外:org.deeplearning4j.optimize.listeners.ScoreIterationListenerはjava.util.Collectionにキャストできません。 MLPClassifierLinear.main( MLPClassifierLinear.java:71)」何が起こっている
? dl4jの経験があれば誰でもこの問題を解決できますか?
他にもあります。私はそれを回り込み、java.lang.ClassNotFoundException:org.bytedeco.javacpp.openblas例外を取得しようとしています。私のdl4jのインストールでは何も間違っていないと推測します。 –
CSVExampleは機能しません。 「java.lang.ClassNotFoundException:org.bytedeco.javacpp.openblas」とも言います –
問題を提出できますか?私は明らかにここに何か不足しています:https://github.com/deeplearning4j/dl4j-examples/issues 私たちは私たちのgitterチャンネルでこれを実行していません。その例は正常に動作します。 –