Top 33 Deeplearning4J 예제 All Answers

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me deeplearning4j 예제 on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://chewathai27.com/to team, along with other related topics such as: deeplearning4j 예제 TensorFlow Java 예제, Deeplearning4j 한글, 이클립스 딥 러닝, Dl4j datasetiterator, DL4J Android, Java deep learning example, Nd4j docs, Deeplearning4j h5


강의 0 : DeepLearning4j 시작하기
강의 0 : DeepLearning4j 시작하기


퀵 스타트 가이드 (Quick Start Guide) – Deeplearning4j: Open-source, Distributed Deep Learning for the JVM

  • Article author: mgubaidullin.github.io
  • Reviews from users: 6983 ⭐ Ratings
  • Top rated: 4.8 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about

    퀵 스타트 가이드 (Quick Start Guide) – Deeplearning4j: Open-source, Distributed Deep Learning for the JVM

    여기에서 소개하는 안내를 잘 따르면 DL4J 예제를 실행하거나 여러분의 작업을 시작할 수 … Deeplearning4j는 여러 층(Layer)으로 구성된 심층 신경망(Deep neural … …

  • Most searched keywords: Whether you are looking for

    퀵 스타트 가이드 (Quick Start Guide) – Deeplearning4j: Open-source, Distributed Deep Learning for the JVM

    여기에서 소개하는 안내를 잘 따르면 DL4J 예제를 실행하거나 여러분의 작업을 시작할 수 … Deeplearning4j는 여러 층(Layer)으로 구성된 심층 신경망(Deep neural … Open-Source Deep-Learning Software for Java and Scala on Hadoop and Spark

  • Table of Contents:

설치를 위한 필요사항 (Prerequisites)

DL4J 예제

다른 프로젝트에서 DL4J 사용하기 POMxml 구성 방법

다음 단계


    
      퀵 스타트 가이드 (Quick Start Guide) - Deeplearning4j: Open-source, Distributed Deep Learning for the JVM

퀵 스타트 가이드 (Quick Start Guide) – Deeplearning4j: Open-source, Distributed Deep Learning for the JVM

Read More

DL4J 예제 분석 – 모두의 딥러닝 – 처음 해 보는 딥러닝

  • Article author: jindodog.tistory.com
  • Reviews from users: 19178 ⭐ Ratings
  • Top rated: 4.1 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about DL4J 예제 분석 – 모두의 딥러닝 – 처음 해 보는 딥러닝 기존에는 DL4J 공식 홈페이지에서 제공하는 예제를 분석한 글을 포스팅 하려 했지만 어느 예제부터 하면 쉽게 이해할 수 있을까 고민이 있어서 ‘모두 … …
  • Most searched keywords: Whether you are looking for DL4J 예제 분석 – 모두의 딥러닝 – 처음 해 보는 딥러닝 기존에는 DL4J 공식 홈페이지에서 제공하는 예제를 분석한 글을 포스팅 하려 했지만 어느 예제부터 하면 쉽게 이해할 수 있을까 고민이 있어서 ‘모두 … 기존에는 DL4J 공식 홈페이지에서 제공하는 예제를 분석한 글을 포스팅 하려 했지만 어느 예제부터 하면 쉽게 이해할 수 있을까 고민이 있어서 ‘모두의 딥러닝’ 이라는 책에 파이썬 코드를 DL4J로 다시 짜서 설명..
  • Table of Contents:
DL4J 예제 분석 - 모두의 딥러닝 - 처음 해 보는 딥러닝
DL4J 예제 분석 – 모두의 딥러닝 – 처음 해 보는 딥러닝

Read More

Deeplearning4j 가이드

  • Article author: recordsoflife.tistory.com
  • Reviews from users: 18939 ⭐ Ratings
  • Top rated: 3.1 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about Deeplearning4j 가이드 이 기사에서는 머신 러닝을위한 현대적이고 강력한 도구 인 deeplearning4j (dl4j) 라이브러리를 사용하여 간단한 신경망을 생성합니다 . …
  • Most searched keywords: Whether you are looking for Deeplearning4j 가이드 이 기사에서는 머신 러닝을위한 현대적이고 강력한 도구 인 deeplearning4j (dl4j) 라이브러리를 사용하여 간단한 신경망을 생성합니다 . 1. 소개 이 기사에서는 머신 러닝을위한 현대적이고 강력한 도구 인 deeplearning4j (dl4j) 라이브러리를 사용하여 간단한 신경망을 생성합니다 . 시작하기 전에이 가이드는 선형 대수, 통계, 기계 학습 이론 및..
  • Table of Contents:

Deeplearning4j 가이드

1 소개

2 딥 러닝이란 무엇입니까

3 프로젝트 설정

4 데이터 준비

5 네트워크 구성 준비

6 네트워크 생성 및 훈련

7 결론

Deeplearning4j 가이드
Deeplearning4j 가이드

Read More

Deeplearning4j 실전(1): Deeplearning4j 핸드폰 디지털 식별

  • Article author: intrepidgeeks.com
  • Reviews from users: 23985 ⭐ Ratings
  • Top rated: 3.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about Deeplearning4j 실전(1): Deeplearning4j 핸드폰 디지털 식별 물론 Deeplearning4j를 제외하고 일부 Deep Learning 라이브러리는 Spark를 지원할 수 있다. 예를 들어 yahoo/Caffe On Spark, AMPlab/SparkNet과 Intel이 최근에 개발한 … …
  • Most searched keywords: Whether you are looking for Deeplearning4j 실전(1): Deeplearning4j 핸드폰 디지털 식별 물론 Deeplearning4j를 제외하고 일부 Deep Learning 라이브러리는 Spark를 지원할 수 있다. 예를 들어 yahoo/Caffe On Spark, AMPlab/SparkNet과 Intel이 최근에 개발한 …
  • Table of Contents:
 Deeplearning4j 실전(1): Deeplearning4j 핸드폰 디지털 식별
Deeplearning4j 실전(1): Deeplearning4j 핸드폰 디지털 식별

Read More

[DL4J] Deeplearning4j 사용하기 (tensorflow, keras to java)

  • Article author: wookidocs.tistory.com
  • Reviews from users: 32620 ⭐ Ratings
  • Top rated: 4.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [DL4J] Deeplearning4j 사용하기 (tensorflow, keras to java) Eclipse Deeplearning4j는 자바와 자바 가상머신 용으로 작성된 딥러닝 … 상황에 따라 필요한 함수나 예제는 https://deeplearning4j.org/ 참고하면 … …
  • Most searched keywords: Whether you are looking for [DL4J] Deeplearning4j 사용하기 (tensorflow, keras to java) Eclipse Deeplearning4j는 자바와 자바 가상머신 용으로 작성된 딥러닝 … 상황에 따라 필요한 함수나 예제는 https://deeplearning4j.org/ 참고하면 … Eclipse Deeplearning4j는 자바와 자바 가상머신 용으로 작성된 딥러닝 라이브러리이며 딥러닝 알고리즘을 광범위하게 지원하는 컴퓨팅 프레임워크이다. Keras와 Tensorflow를 이용해서 학습하고 생성된..
  • Table of Contents:

태그

관련글

댓글0

공지사항

최근글

인기글

최근댓글

태그

전체 방문자

티스토리툴바

[DL4J] Deeplearning4j 사용하기 (tensorflow, keras to java)
[DL4J] Deeplearning4j 사용하기 (tensorflow, keras to java)

Read More


See more articles in the same category here: https://chewathai27.com/to/blog.

처음 해 보는 딥러닝

기존에는 DL4J 공식 홈페이지에서 제공하는 예제를 분석한 글을 포스팅 하려 했지만 어느 예제부터 하면 쉽게 이해할 수 있을까 고민이 있어서 ‘모두의 딥러닝’ 이라는 책에 파이썬 코드를 DL4J로 다시 짜서 설명하기로 했다.

모두의 딥러닝 파이썬 예제 – https://github.com/gilbutITbook/006958

이번에는 01_My_First_Deeplearning.py 를 DL4J를 이용해서 자바로 바꾼다.

01_My_First_Deeplearning.py

# -*- coding: utf-8 -*- # 코드 내부에 한글을 사용가능 하게 해주는 부분입니다.

# 딥러닝을 구동하는 데 필요한 케라스 함수를 불러옵니다. from keras.models import Sequential from keras.layers import Dense

# 필요한 라이브러리를 불러옵니다. import numpy import tensorflow as tf

# 실행할 때마다 같은 결과를 출력하기 위해 설정하는 부분입니다. seed = 0 numpy.random.seed(seed) tf.set_random_seed(seed)

# 준비된 수술 환자 데이터를 불러들입니다. Data_set = numpy.loadtxt( “../dataset/ThoraricSurgery.csv” , delimiter= “,” )

# 환자의 기록과 수술 결과를 X와 Y로 구분하여 저장합니다. X = Data_set[:, 0 : 17 ] Y = Data_set[:, 17 ]

# 딥러닝 구조를 결정합니다(모델을 설정하고 실행하는 부분입니다). model = Sequential() model.add(Dense( 30 , input_dim= 17 , activation= ‘relu’ )) model.add(Dense( 1 , activation= ‘sigmoid’ ))

# 딥러닝을 실행합니다. model. compile (loss= ‘mean_squared_error’ , optimizer= ‘adam’ , metrics=[ ‘accuracy’ ]) model.fit(X, Y, epochs= 30 , batch_size= 10 )

# 결과를 출력합니다. print ( ”

Accuracy: %.4f” % (model.evaluate(X, Y)[ 1 ]))

python 실행결과

파이썬 코드 실행결과 Epoch 30에 정확도는 0.8511이 나왔다.

코드는 크게 데이터를 불러오는 부분과 신경망을 구성하고 실행하는 부분으로 나뉜다.

먼저 데이터를 불러오는 부분부터 보자.

==================================데이터 입력==================================

python

Data_set = numpy.loadtxt( “../dataset/ThoraricSurgery.csv” , delimiter= “,” )

X = Data_set[:, 0 : 17 ] Y = Data_set[:, 17 ]

csv 파일을 가져와 맨 앞부터 0부터 17번 값을 X에 마지막 18번째 값을 Y에 넣는다.

값을 출력하면 X는 17개씩 Row별로 들어가 있고 Y는 길게 하나가 들어가 있는 것을 볼 수 있다.

java

private static final String SAMPLE_CSV_FILE_PATH = “../dataset /ThoraricSurgery.csv” ;

INDArray input = Nd4j.create( 470 , 17 ); INDArray labels = Nd4j.create( 470 , 1 );

try (Reader reader = Files.newBufferedReader(Paths.get(SAMPLE_CSV_FILE_PATH)); CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT);) { for (CSVRecord csvRecord : csvParser) { for ( int i = 0 ; i < 17 ; i++) { double inputValue = Double.parseDouble(csvRecord.get(i)); input.putScalar( new int [] { ( int ) (csvRecord.getRecordNumber() - 1 ), i }, inputValue); } double resultValue = Double.parseDouble(csvRecord.get( 17 )); labels.putScalar( new int [] { ( int ) (csvRecord.getRecordNumber() - 1 ), 0 }, resultValue); } } DataSet ds = new DataSet(input, labels); java도 동일하다. CSV 파일로 불러와 input과 labels를 파이썬의 X, Y 처럼 넣어준다. 470은 데이터가 470건이 있어서 명시적으로 표시했다. java에 DataSet은 DL4j에서 신경망의 입출력을 세팅해준다. 반복문 안에서는 csv 파일을 파싱해서 배열에 하나씩 넣어주고 있다. java와 python에서 동일하게 데이터를 세팅했다. ==================================딥러닝 모델 설정================================== python model = Sequential() model.add(Dense( 30 , input_dim= 17 , activation= 'relu' )) model.add(Dense( 1 , activation= 'sigmoid' )) model. compile (loss= 'mean_squared_error' , optimizer= 'adam' , metrics=[ 'accuracy' ]) model.fit(X, Y, epochs= 30 , batch_size= 10 ) print ( " Accuracy: %.4f" % (model.evaluate(X, Y)[ 1 ])) python의 딥러닝 모델을 살펴보면 입력은 17개 활성함수는 relu 은닉층에서 활성함수는 sigmoid 출력층에서 손실함수는 mse, optimizer는 adam 이다. 학습하는 부분에서는 epochs는 30이다. java private static MultiLayerConfiguration getMyFirstDeeplearning() { return new NeuralNetConfiguration.Builder().seed(seed).iterations( 30 ) .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT) .updater(Updater.ADAM) .list() .layer( 0 , new DenseLayer.Builder().nIn( 17 ).nOut( 30 ).activation(Activation.RELU).build()) .layer( 1 , new OutputLayer.Builder(LossFunctions.LossFunction.MSE) .activation(Activation.SIGMOID).nIn( 30 ).nOut( 1 ).build()) .build(); } java의 딥러닝 모델을 살펴보면 입력은 17개 활성화 함수는 RELU 은닉층에서 활성함수는 SIGMOID 출력층에서 손실함수는 MSE optimizer는 SGD, updater는 ADAM 둘은 유사한 모델이지만 dl4j는 업데이트 함수(모멘텀) 최적화 함수를 나눈게 특징이다. python의 epochs는 dl4j에서 iterations로 설정해준다. 동일하게 30이다. 여기서 지정해준 활성함수, 손실함수을 제외하면 추가적으로 learning rate 등을 설정해줄 수 있다. 각각의 기본으로 설정되어 있는 값을 살펴보면 python - adam - default 출처: https://www.tensorflow.org/api_docs/python/tf/train/AdamOptimizer java - adam - default learning rate, epsilon, beta1, beta2 값이 동일한 것을 볼 수 있다. ==================================DL4J 실행================================== java 실행결과 둘의 실행결과를 비교해보면 python은 loss는 0.1461 java는 0.146182932752244 accuracy는 python 0.8511, java 0.8511 실행결과 동일한 accuracy가 나온것을 볼 수 있다. 둘의 코드가 상이하게 다르지만 비슷한 결과를 얻을 수 있었다. 모르는 많은 용어들이 나왔지만 앞으로 둘의 예제 코드를 바꿔가면서 책에 따라 이해하면 되겠다. java 전체 코드 import java.io.IOException; import java.io.Reader; import java.nio.file.Files; import java.nio.file.Paths; import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVParser; import org.apache.commons.csv.CSVRecord; import org.deeplearning4j.eval.Evaluation; import org.deeplearning4j.nn.api.Layer; import org.deeplearning4j.nn.api.OptimizationAlgorithm; import org.deeplearning4j.nn.conf.MultiLayerConfiguration; import org.deeplearning4j.nn.conf.NeuralNetConfiguration; import org.deeplearning4j.nn.conf.NeuralNetConfiguration.ListBuilder; import org.deeplearning4j.nn.conf.Updater; import org.deeplearning4j.nn.conf.distribution.UniformDistribution; import org.deeplearning4j.nn.conf.layers.DenseLayer; import org.deeplearning4j.nn.conf.layers.OutputLayer; import org.deeplearning4j.nn.conf.layers.OutputLayer.Builder; import org.deeplearning4j.nn.multilayer.MultiLayerNetwork; import org.deeplearning4j.nn.weights.WeightInit; import org.deeplearning4j.optimize.listeners.ScoreIterationListener; import org.nd4j.linalg.activations.Activation; import org.nd4j.linalg.api.ndarray.INDArray; import org.nd4j.linalg.dataset.DataSet; import org.nd4j.linalg.factory.Nd4j; import org.nd4j.linalg.learning.config.Nesterovs; import org.nd4j.linalg.lossfunctions.LossFunctions; class Main { private static final int seed = 0 ; private static final String SAMPLE_CSV_FILE_PATH = "./dataset/ThoraricSurgery.csv" ; public static void main() throws IOException{ INDArray input = Nd4j.create( 470 , 17 ); INDArray labels = Nd4j.create( 470 , 1 ); try (Reader reader = Files.newBufferedReader(Paths.get(SAMPLE_CSV_FILE_PATH)); CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT);) { for (CSVRecord csvRecord : csvParser) { for ( int i = 0 ; i < 17 ; i++) { double inputValue = Double.parseDouble(csvRecord.get(i)); input.putScalar( new int [] { ( int ) (csvRecord.getRecordNumber() - 1 ), i }, inputValue); } double resultValue = Double.parseDouble(csvRecord.get( 17 )); labels.putScalar( new int [] { ( int ) (csvRecord.getRecordNumber() - 1 ), 0 }, resultValue); } } DataSet ds = new DataSet(input, labels); MultiLayerConfiguration conf = getMyFirstDeeplearning(); MultiLayerNetwork net = new MultiLayerNetwork(conf); net.init(); net.setListeners( new ScoreIterationListener( 1 )); net.fit(ds); INDArray output = net.output(ds.getFeatureMatrix()); Evaluation eval = new Evaluation( 2 ); eval.eval(ds.getLabels(), output); System.out.println(eval.stats()); } private static MultiLayerConfiguration getMyFirstDeeplearning() { return new NeuralNetConfiguration.Builder().seed(seed).iterations( 30 ) .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT) .updater(Updater.ADAM) .list() .layer( 0 , new DenseLayer.Builder().nIn( 17 ).nOut( 30 ).activation(Activation.RELU).build()) .layer( 1 , new OutputLayer.Builder(LossFunctions.LossFunction.MSE) .activation(Activation.SIGMOID).nIn( 30 ).nOut( 1 ).build()) .build(); } }

Deeplearning4j 가이드

1. 소개

이 기사에서는 머신 러닝을위한 현대적이고 강력한 도구 인 deeplearning4j (dl4j) 라이브러리를 사용하여 간단한 신경망을 생성합니다 .

시작하기 전에이 가이드는 선형 대수, 통계, 기계 학습 이론 및 잘 기반을 갖춘 ML 엔지니어에게 필요한 기타 많은 주제에 대한 깊은 지식을 요구하지 않습니다.

2. 딥 러닝이란 무엇입니까?

신경망은 상호 연결된 노드 계층으로 구성된 계산 모델입니다.

노드는 숫자 데이터의 뉴런과 유사한 프로세서입니다. 입력에서 데이터를 가져 와서 이러한 데이터에 가중치와 함수를 적용하고 결과를 출력으로 보냅니다. 이러한 네트워크는 소스 데이터의 몇 가지 예를 사용하여 학습 할 수 있습니다.

훈련은 본질적으로 노드에서 나중에 계산에 영향을 미치는 일부 숫자 상태 (가중치)를 저장하는 것입니다. 학습 예에는 이러한 항목의 기능 및 알려진 특정 클래스가 포함 된 데이터 항목이 포함될 수 있습니다 (예 : “이 16×16 픽셀 세트에는 손으로 쓴 문자”a “가 포함되어 있음).

훈련이 완료된 후 신경망 은 이전에 이러한 특정 데이터 항목을 본 적이 없더라도 새로운 데이터에서 정보를 추출 할 수 있습니다 . 잘 모델링되고 잘 훈련 된 네트워크는 이미지, 손으로 쓴 편지, 음성을 인식하고 통계 데이터를 처리하여 비즈니스 인텔리전스에 대한 결과를 생성하는 등의 작업을 수행 할 수 있습니다.

최근 몇 년 동안 고성능 병렬 컴퓨팅의 발전으로 심층 신경망이 가능해졌습니다. 이러한 네트워크 는 여러 중간 (또는 숨겨진 ) 레이어 로 구성 된다는 점에서 단순한 신경망과 다릅니다 . 이 구조를 통해 네트워크는 훨씬 더 복잡한 방식 (재귀 적, 반복적, 컨볼 루션 방식 등)으로 데이터를 처리하고 더 많은 정보를 추출 할 수 있습니다.

3. 프로젝트 설정

라이브러리를 사용하려면 최소한 Java 7이 필요합니다. 또한 일부 기본 구성 요소로 인해 64 비트 JVM 버전에서만 작동합니다.

가이드를 시작하기 전에 요구 사항이 충족되는지 확인하겠습니다.

$ java -version java version “1.8.0_131” Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

먼저 Maven pom.xml 파일에 필요한 라이브러리를 추가하겠습니다 . 라이브러리 버전을 속성 항목으로 추출합니다 (최신 버전의 라이브러리는 Maven Central 저장소를 확인하세요 ).

< properties > < dl4j.version > 0.9.1 < dependencies > < dependency > < groupId > org.nd4j < artifactId > nd4j-native-platform < version > ${dl4j.version} < dependency > < groupId > org.deeplearning4j < artifactId > deeplearning4j-core < version > ${dl4j.version}

참고 nd4j 네이티브 플랫폼 의존성이 가능한 여러 구현 중 하나입니다.

다양한 플랫폼 (macOS, Windows, Linux, Android 등)에서 사용할 수있는 기본 라이브러리에 의존합니다. CUDA 프로그래밍 모델을 지원하는 그래픽 카드에서 계산을 실행 하려면 백엔드를 nd4j-cuda-8.0-platform으로 전환 할 수도 있습니다.

4. 데이터 준비

4.1. 데이터 세트 파일 준비

우리는 기계 학습의“Hello World”( 붓꽃 데이터 세트의 분류)를 작성할 것 입니다 . 이것은 다른 종 ( Iris setosa , Iris versicolor , Iris virginica ) 의 꽃에서 수집 된 데이터 세트입니다 .

이 종은 꽃잎과 꽃받침의 길이와 너비가 다릅니다. 입력 데이터 항목을 분류하는 정확한 알고리즘을 작성하는 것은 어려울 것입니다 (즉, 특정 꽃이 어떤 종에 속하는지 결정). 하지만 잘 훈련 된 신경망은 실수없이 빠르게 분류 할 수 있습니다.

이 데이터의 CSV 버전을 사용할 것입니다. 여기서 열 0..3에는 종의 다양한 기능이 포함되고 열 4에는 레코드 클래스 또는 값 0, 1 또는 2로 코딩 된 종이 포함됩니다.

5.1,3.5,1.4,0.2,0 4.9,3.0,1.4,0.2,0 4.7,3.2,1.3,0.2,0 … 7.0,3.2,4.7,1.4,1 6.4,3.2,4.5,1.5,1 6.9,3.1,4.9,1.5,1 …

4.2. 데이터 벡터화 및 읽기

신경망은 숫자로 작동하기 때문에 클래스를 숫자로 인코딩합니다. 실제 데이터 항목을 일련의 숫자 (벡터)로 변환하는 것을 벡터화라고 합니다. deeplearning4j 는이를 위해 datavec 라이브러리를 사용합니다 .

먼저이 라이브러리를 사용하여 벡터화 된 데이터가있는 파일을 입력 해 보겠습니다. CSVRecordReader를 만들 때 건너 뛸 줄 수 (예 : 파일에 헤더 줄이있는 경우)와 구분 기호 (이 경우 쉼표)를 지정할 수 있습니다.

try (RecordReader recordReader = new CSVRecordReader( 0 , ‘,’ )) { recordReader.initialize( new FileSplit( new ClassPathResource( “iris.txt” ).getFile())); }

레코드를 반복하기 위해 DataSetIterator 인터페이스 의 여러 구현 중 하나를 사용할 수 있습니다 . 데이터 세트는 상당히 방대 할 수 있으며 값을 페이징하거나 캐시하는 기능이 유용 할 수 있습니다.

그러나 우리의 작은 데이터 세트에는 150 개의 레코드 만 포함되어 있으므로 iterator.next ()를 호출하여 한 번에 모든 데이터를 메모리로 읽어 보겠습니다 .

또한 우리의 경우 기능 개수 (4) 및 총 클래스 수 (3) 와 동일한 클래스 열의 인덱스를 지정합니다 .

또한 원본 파일에서 클래스 순서를 제거하려면 데이터 세트를 섞어 야합니다.

기본 System.currentTimeMillis () 호출 대신 상수 임의 시드 (42)를 지정 하여 셔플 링 결과가 항상 동일하도록합니다. 이를 통해 프로그램을 실행할 때마다 안정적인 결과를 얻을 수 있습니다.

DataSetIterator iterator = new RecordReaderDataSetIterator( recordReader, 150 , FEATURES_COUNT, CLASSES_COUNT); DataSet allData = iterator.next(); allData.shuffle( 42 );

4.3. 정규화 및 분할

훈련 전에 데이터로해야 할 또 다른 일은 데이터를 정규화하는 것입니다. 정규화는 2 단계 프로세스이다 :

데이터에 대한 통계 수집 (적합)

데이터를 균일하게 만들기 위해 어떤 방식 으로든 데이터를 변경 (변환)합니다.

정규화는 데이터 유형에 따라 다를 수 있습니다.

예를 들어 다양한 크기의 이미지를 처리하려면 먼저 크기 통계를 수집 한 다음 이미지를 균일 한 크기로 조정해야합니다.

그러나 숫자의 경우 정규화는 일반적으로이를 소위 정규 분포로 변환하는 것을 의미합니다. NormalizerStandardize의 클래스는 우리에게 도움이 될 수 있습니다 :

DataNormalization normalizer = new NormalizerStandardize(); normalizer.fit(allData); normalizer.transform(allData);

이제 데이터가 준비되었으므로 세트를 두 부분으로 분할해야합니다.

첫 번째 부분은 교육 세션에서 사용됩니다. 훈련 된 네트워크를 테스트하기 위해 데이터의 두 번째 부분 (네트워크가 전혀 볼 수 없음)을 사용할 것입니다.

이를 통해 분류가 올바르게 작동하는지 확인할 수 있습니다. 데이터의 65 % (0.65)를 교육에 사용하고 나머지 35 %는 테스트에 사용합니다.

SplitTestAndTrain testAndTrain = allData.splitTestAndTrain( 0.65 ); DataSet trainingData = testAndTrain.getTrain(); DataSet testData = testAndTrain.getTest();

5. 네트워크 구성 준비

5.1. Fluent 구성 빌더

이제 멋진 유창한 빌더로 네트워크 구성을 구축 할 수 있습니다.

MultiLayerConfiguration configuration = new NeuralNetConfiguration.Builder() .iterations( 1000 ) .activation(Activation.TANH) .weightInit(WeightInit.XAVIER) .learningRate( 0.1 ) .regularization( true ).l2( 0.0001 ) .list() .layer( 0 , new DenseLayer.Builder().nIn(FEATURES_COUNT).nOut( 3 ).build()) .layer( 1 , new DenseLayer.Builder().nIn( 3 ).nOut( 3 ).build()) .layer( 2 , new OutputLayer.Builder( LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD) .activation(Activation.SOFTMAX) .nIn( 3 ).nOut(CLASSES_COUNT).build()) .backprop( true ).pretrain( false ) .build();

네트워크 모델을 구축하는이 단순화 된 유창한 방법에도 불구하고 소화해야 할 것이 많고 조정할 매개 변수가 많습니다. 이 모델을 분해 해 보겠습니다.

5.2. 네트워크 매개 변수 설정

반복 () 최적화 반복 방법 지정 작성기 번호.

반복 최적화는 네트워크가 좋은 결과를 얻을 때까지 훈련 세트에서 여러 번의 패스를 수행하는 것을 의미합니다.

일반적으로 실제 및 대규모 데이터 세트에서 훈련 할 때 여러 세대 (네트워크를 통한 완전한 데이터 전달)와 각 세대에 대해 한 번의 반복을 사용합니다. 그러나 초기 데이터 세트가 최소이므로 한 시대와 여러 반복을 사용합니다.

활성화 () 의 출력을 결정하기 위해 노드 내에서 실행하는 기능이다.

가장 간단한 활성화 함수는 선형 f (x) = x입니다. 그러나 비선형 함수 만 네트워크가 몇 개의 노드를 사용하여 복잡한 작업을 해결할 수 있도록합니다.

org.nd4j.linalg.activations.Activation 열거 형 에서 조회 할 수있는 다양한 활성화 기능이 있습니다 . 필요한 경우 활성화 함수를 작성할 수도 있습니다. 그러나 제공된 쌍곡 탄젠트 (tanh) 함수를 사용합니다.

weightInit () 여러 가지 방법 중 하나를 지정하여 네트워크에 대한 초기 가중치를 설정합니다. 올바른 초기 가중치는 훈련 결과에 큰 영향을 미칠 수 있습니다. 수학에 너무 많이 들어 가지 않고 가우스 분포 ( WeightInit.XAVIER ) 의 형태로 설정해 보겠습니다. 이는 일반적으로 시작하기에 좋은 선택입니다.

다른 모든 가중치 초기화 방법은 org.deeplearning4j.nn.weights.WeightInit 열거 형 에서 조회 할 수 있습니다 .

학습률 은 네트워크의 학습 능력에 중대한 영향을 미치는 중요한 매개 변수입니다.

더 복잡한 경우에이 매개 변수를 조정하는 데 많은 시간을 할애 할 수 있습니다. 그러나 우리의 간단한 작업에서는 0.1이라는 매우 중요한 값을 사용하고 learningRate () 빌더 메서드로 설정합니다.

훈련 신경망의 문제 중 하나는 네트워크가 훈련 데이터를 “기억”할 때 과적 합하는 경우입니다 .

이는 네트워크가 훈련 데이터에 지나치게 높은 가중치를 설정하고 다른 데이터에 대해 잘못된 결과를 생성 할 때 발생합니다.

이 문제를 해결하기 위해 .regularization (true) .l2 (0.0001) 줄 을 사용하여 l2 정규화를 설정합니다 . 정규화는 너무 큰 가중치에 대해 네트워크에 페널티를주고 과적 합을 방지합니다.

5.3. 네트워크 계층 구축

다음으로 고밀도 (완전 연결이라고도 함) 계층의 네트워크를 만듭니다.

첫 번째 계층에는 학습 데이터의 열과 동일한 양의 노드가 포함되어야합니다 (4).

두 번째 조밀 한 레이어에는 세 개의 노드가 포함됩니다. 이것은 우리가 변경할 수있는 값이지만 이전 레이어의 출력 수는 동일해야합니다.

최종 출력 레이어에는 클래스 수 (3)와 일치하는 노드 수가 포함되어야합니다. 네트워크의 구조는 그림에 나와 있습니다.

성공적인 훈련 후에는 입력을 통해 4 개의 값을 수신하고 3 개의 출력 중 하나로 신호를 보내는 네트워크를 갖게됩니다. 이것은 간단한 분류기입니다.

마지막으로 네트워크 구축을 완료하기 위해 역 전파 (가장 효과적인 훈련 방법 중 하나)를 설정하고 .backprop (true) .pretrain (false) 라인을 사용하여 사전 훈련을 비활성화 합니다.

6. 네트워크 생성 및 훈련

이제 구성에서 신경망을 만들고 초기화하고 실행 해 보겠습니다.

MultiLayerNetwork model = new MultiLayerNetwork(configuration); model.init(); model.fit(trainingData);

이제 나머지 데이터 세트를 사용하여 훈련 된 모델을 테스트하고 세 가지 클래스에 대한 평가 지표로 결과를 확인할 수 있습니다.

INDArray output = model.output(testData.getFeatureMatrix()); Evaluation eval = new Evaluation( 3 ); eval.eval(testData.getLabels(), output);

이제 eval.stats ()를 출력하면 네트워크가 붓꽃을 분류하는 데 꽤 능숙하다는 것을 알 수 있습니다. 클래스 1을 클래스 2로 세 번 실수 했음에도 불구하고 말입니다.

Examples labeled as 0 classified by model as 0: 19 times Examples labeled as 1 classified by model as 1: 16 times Examples labeled as 1 classified by model as 2: 3 times Examples labeled as 2 classified by model as 2: 15 times ==========================Scores======================================== Accuracy: 0.9434 Precision: 0.9444 Recall: 0.9474 F1 Score: 0.9411 Precision, recall & F1: macro-averaged (equally weighted avg. of 3 classes) ========================================================================

유창한 구성 빌더를 사용하면 네트워크의 레이어를 빠르게 추가 또는 수정하거나 다른 매개 변수를 조정하여 모델을 개선 할 수 있는지 확인할 수 있습니다. ㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ ㅇㅇㅇ

7. 결론

이 기사에서는 deeplearning4j 라이브러리를 사용하여 간단하면서도 강력한 신경망을 구축했습니다.

Deeplearning4j 실전(1): Deeplearning4j 핸드폰 디지털 식별

UTF-8 0.7.1 0.7.1 0.7.1 2.10 org.nd4j nd4j-native ${nd4j.version} org.deeplearning4j dl4j-spark_2.11 ${dl4j.version} org.datavec datavec-spark_${scala.binary.version} ${datavec.version} org.deeplearning4j deeplearning4j-core ${dl4j.version}

int nChannels = 1; //black & white picture, 3 if color image int outputNum = 10; //number of classification int batchSize = 64; //mini batch size for sgd int nEpochs = 10; //total rounds of training int iterations = 1; //number of iteration in each traning round int seed = 123; //random seed for initialize weights log.info(“Load data….”); DataSetIterator mnistTrain = null; DataSetIterator mnistTest = null; mnistTrain = new MnistDataSetIterator(batchSize, true, 12345); mnistTest = new MnistDataSetIterator(batchSize, false, 12345);

MultiLayerConfiguration.Builder builder = new NeuralNetConfiguration.Builder() .seed(seed) .iterations(iterations) .regularization(true).l2(0.0005) .learningRate(0.01)//.biasLearningRate(0.02) //.learningRateDecayPolicy(LearningRatePolicy.Inverse).lrPolicyDecayRate(0.001).lrPolicyPower(0.75) .weightInit(WeightInit.XAVIER) .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT) .updater(Updater.NESTEROVS).momentum(0.9) .list() .layer(0, new ConvolutionLayer.Builder(5, 5) //nIn and nOut specify depth. nIn here is the nChannels and nOut is the number of filters to be applied .nIn(nChannels) .stride(1, 1) .nOut(20) .activation(“identity”) .build()) .layer(1, new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.MAX) .kernelSize(2,2) .stride(2,2) .build()) .layer(2, new ConvolutionLayer.Builder(5, 5) //Note that nIn need not be specified in later layers .stride(1, 1) .nOut(50) .activation(“identity”) .build()) .layer(3, new SubsamplingLayer.Builder(SubsamplingLayer.PoolingType.MAX) .kernelSize(2,2) .stride(2,2) .build()) .layer(4, new DenseLayer.Builder().activation(“relu”) .nOut(500).build()) .layer(5, new OutputLayer.Builder(LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD) .nOut(outputNum) .activation(“softmax”) .build()) .backprop(true).pretrain(false) .cnnInputSize(28, 28, 1); // The builder needs the dimensions of the image along with the number of channels. these are 28×28 images in one channel //new ConvolutionLayerSetup(builder,28,28,1); MultiLayerConfiguration conf = builder.build(); MultiLayerNetwork model = new MultiLayerNetwork(conf); model.init(); model.setListeners(new ScoreIterationListener(1)); // a listener which can print loss function score after each iteration

for( int i = 0; i < nEpochs; ++i ) { model.fit(mnistTrain); log.info("*** Completed epoch " + i + "***"); log.info("Evaluate model...."); Evaluation eval = new Evaluation(outputNum); while(mnistTest.hasNext()){ DataSet ds = mnistTest.next(); INDArray output = model.output(ds.getFeatureMatrix(), false); eval.eval(ds.getLabels(), output); } log.info(eval.stats()); mnistTest.reset(); } Examples labeled as 0 classified by model as 0: 974 times Examples labeled as 0 classified by model as 6: 2 times Examples labeled as 0 classified by model as 7: 2 times Examples labeled as 0 classified by model as 8: 1 times Examples labeled as 0 classified by model as 9: 1 times Examples labeled as 1 classified by model as 0: 1 times Examples labeled as 1 classified by model as 1: 1128 times Examples labeled as 1 classified by model as 2: 1 times Examples labeled as 1 classified by model as 3: 2 times Examples labeled as 1 classified by model as 5: 1 times Examples labeled as 1 classified by model as 6: 2 times Examples labeled as 2 classified by model as 2: 1026 times Examples labeled as 2 classified by model as 4: 1 times Examples labeled as 2 classified by model as 6: 1 times Examples labeled as 2 classified by model as 7: 3 times Examples labeled as 2 classified by model as 8: 1 times Examples labeled as 3 classified by model as 0: 1 times Examples labeled as 3 classified by model as 1: 1 times Examples labeled as 3 classified by model as 2: 1 times Examples labeled as 3 classified by model as 3: 998 times Examples labeled as 3 classified by model as 5: 3 times Examples labeled as 3 classified by model as 7: 1 times Examples labeled as 3 classified by model as 8: 4 times Examples labeled as 3 classified by model as 9: 1 times Examples labeled as 4 classified by model as 2: 1 times Examples labeled as 4 classified by model as 4: 973 times Examples labeled as 4 classified by model as 6: 2 times Examples labeled as 4 classified by model as 7: 1 times Examples labeled as 4 classified by model as 9: 5 times Examples labeled as 5 classified by model as 0: 2 times Examples labeled as 5 classified by model as 3: 4 times Examples labeled as 5 classified by model as 5: 882 times Examples labeled as 5 classified by model as 6: 1 times Examples labeled as 5 classified by model as 7: 1 times Examples labeled as 5 classified by model as 8: 2 times Examples labeled as 6 classified by model as 0: 4 times Examples labeled as 6 classified by model as 1: 2 times Examples labeled as 6 classified by model as 4: 1 times Examples labeled as 6 classified by model as 5: 4 times Examples labeled as 6 classified by model as 6: 945 times Examples labeled as 6 classified by model as 8: 2 times Examples labeled as 7 classified by model as 1: 5 times Examples labeled as 7 classified by model as 2: 3 times Examples labeled as 7 classified by model as 3: 1 times Examples labeled as 7 classified by model as 7: 1016 times Examples labeled as 7 classified by model as 8: 1 times Examples labeled as 7 classified by model as 9: 2 times Examples labeled as 8 classified by model as 0: 1 times Examples labeled as 8 classified by model as 3: 1 times Examples labeled as 8 classified by model as 5: 2 times Examples labeled as 8 classified by model as 7: 2 times Examples labeled as 8 classified by model as 8: 966 times Examples labeled as 8 classified by model as 9: 2 times Examples labeled as 9 classified by model as 3: 1 times Examples labeled as 9 classified by model as 4: 2 times Examples labeled as 9 classified by model as 5: 4 times Examples labeled as 9 classified by model as 6: 1 times Examples labeled as 9 classified by model as 7: 5 times Examples labeled as 9 classified by model as 8: 3 times Examples labeled as 9 classified by model as 9: 993 times ==========================Scores======================================== Accuracy: 0.9901 Precision: 0.99 Recall: 0.99 F1 Score: 0.99 ======================================================================== [main] INFO cv.LenetMnistExample - ****************Example finished******************** 이 내용에 흥미가 있습니까? 현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: [머신러닝] 벡터기(SVM) 지원에 관하여 가능한 한 이해하기 쉽게 ④~소프트 여분과 하드 여분의 설치를 정리합니다~ 분리 선형으로 데이터를 분리할 수 있는svm를 실현합니다. 사용한 데이터는 아이리스 데이터 집합입니다. 아이리스 데이터는 아이리스 품종의 데이터입니다. 아이리스 품종Setosa, Virginica, Virginica... 텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오. CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다. Eclipse Deeplearning4j GiChat 교육 과정:https://gitbook.cn/gitchat/column/5bfb6741ae0e5f436e35cd9fEclipseDeeplearning4j 시리즈 블로그:https://blog.csdn.net/wangongxiEclipse Deeplearning4j Github:https://github.com/eclipse/deeplearning4j최근 몇 년 동안 깊이 있는 학습이 인기를 끌었고 자신을 포함한 많은 기계 학습에 대해 아직 반은 알고 있는 흰둥이들도 깊이 있는 학습으로 응용을 하기 시작했다.흰둥이의 등급이 높지 않아 알고리즘이 스스로 쓸 수 없기 때문에 개원 라이브러리를 사용했다.Deep Learning의 소스 라이브러리가 얼마나 많은지 언어로 구분하면python 시리즈의tensowflow,theano,keras,C/C++ 시리즈의Caffe,그리고 Lua 시리즈의torch 등이 있다.그러나 우리 회사는 자바를 위주로 하고 대부분의 프로젝트도 자바 웹 서비스를 만들기 때문에 저는 최종적으로Deeplearning4j를 선택했습니다.딥러닝4j는 해외 스타트업인 스카이mind 제품이다.현재 최신 버전은 0.7.2로 업데이트되었다.원본 코드를github에 모두 공개하고 위탁 관리(https://github.com/deeplearning4j/deeplearning4j).이 라이브러리 이름에서 알 수 있듯이 자바 프로그래머가 쓴 Deep Learning 라이브러리로 바뀐다.사실 이 라이브러리가 매력적인 것은 자바를 지원하는 것이 아니라 스파크를 지원하는 것이다.Deep Learning 모델의 훈련은 대량의 메모리를 필요로 하고 원시 데이터의 저장도 때때로 큰 외부 저장 공간을 필요로 하기 때문에 집단을 이용하여 처리할 수 있다면 가장 좋다.물론 Deeplearning4j를 제외하고 일부 Deep Learning 라이브러리는 Spark를 지원할 수 있다. 예를 들어 yahoo/Caffe On Spark, AMPlab/SparkNet과 Intel이 최근에 개발한 BigDL 등이다.이 라이브러리들은 나 자신도 별로 써 본 적이 없어서 더 이상 말하지 않겠다. 여기는Deeplearning4j의 사용에 중심을 두었다.일반적으로 다른 사람의 코드 라이브러리를 사용하기 시작하면 데모를 먼저 하거나 Hello World의 예를 들어 프로그래밍 언어를 배우는 것처럼 첫 번째 코드는 Hello World를 출력한다.Deep Learning의Hello World의 예는 일반적으로 두 가지인데 하나는 Mnist 데이터 집합의 분류이고 다른 하나는 Word2Vec가 비슷한 단어를 찾는 것이다.Word2Vec는 엄격한 의미의 심도 신경 네트워크가 아니기 때문에 여기서는 Lenet 네트워크로 Mnist 데이터 집합을 처리하여 Deep Learning의 Hello World로 삼는다.Mnist는 오픈소스 28x28의 흑백 핸드 디지털 사진집(http://yann.lecun.com/exdb/mnist/), 트레이닝 사진 6W장과 테스트 사진 1W장이 담겨 있다.Lenet에 대한 구조 설명은 이 링크를 참조하십시오.http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf.다음은 Deeplearning4j를 이용하여 모델링, 훈련, 예측 평가를 어떻게 하는지 상세하게 설명한다.우선, 우리는 마븐 프로젝트를 세웁니다.그리고pom 파일에 Deeplearning4j와 관련된 의존도를 추가합니다.가장 중요한 것은 세 가지가 있는데 그것이 바로 deeplearning4j-core,datavec,nd4j이다.deeplearning4j-core는 신경 네트워크 구조로 이루어진 코드이고 nd4j는 장량 연산을 하는 라이브러리로 자바CPP를 통해 컴파일된 C++ 라이브러리(옵션:ATAL, MKL, OpenBLAS)를 호출하고 데이터vec는 주로 데이터를 담당하는 ETL이다.표시 가능한 코드:이런 의존에는 스파크와 관련된 것이 있는데 주로 스파크를 뛰는 데 쓰인다.하지만 상관없으니 먼저 끌어들이면 된다.이어서, 우리는 아래의 코드를 설명한다.우리는 먼저 분류된 개수(outputNum), 미니-batch의 수량(batchSize) 등 구체적인 매개 변수를 정의해야 한다. 구체적으로 그림에 주석을 달았다.설명이 필요한 것은 MnistDataSetIterator라는 교체기 종류입니다.이 클래스는 사실 2진 Mnist 데이터 집합을 읽는 하이-level의 봉인입니다.debug를 통해 우리는 네트워크에서 Mnist 데이터 집합을 다운로드하고 데이터와 표시를 읽으며 교체기를 구축하는 과정을 발견할 수 있다.원본 코드에서는 다운로드한 파일을 시스템의user에 기본적으로 저장합니다.홈 디렉터리에서 구체적으로는 사람마다 다를 수 있다.내가 처한 환경 네트워크가 별로 좋지 않기 때문에 이런 하이-level 인터페이스를 이용할 때 Mnist 데이터를 다운로드하는 데 실패하여 이상을 던져 훈련을 할 수 없을 가능성이 높다.따라서 여러분은 먼저 이 데이터를 다운로드한 다음에 원본의 요구에 따라 해당하는 디렉터리에 놓고 원본에 따라 파일을 정확하게 명명할 수 있습니다. 그러면 이런 하이-level의 인터페이스를 이용할 수 있습니다.구체적으로 참고해야 할 것은 MnistDataFetcher 클래스의 관련 코드입니다.우리가 데이터를 정확하게 읽은 후에 우리는 구체적인 신경 네트워크 구조를 정의해야 한다. 여기서 나는 Lenet, Deeplearning4j의 실현을 이용하여 홈페이지를 참고했다.https://github.com/deeplearning4j/dl4j-examples)의 예입니다.구체적인 코드는 다음과 같습니다.신경 네트워크는 많은 초파라미터를 정의해야 하며 학습률, 정규화 계수, 권적핵의 크기, 격려 함수 등은 모두 인위적으로 설정해야 한다는 것을 알 수 있다.서로 다른 초파라미터는 결과에 대한 영향이 매우 크지만 사실은 나중에 많은 시간을 데이터 처리와 참고에 쓴다는 것을 발견했다.어쨌든 자신이 인터넷을 설계하는 능력에 한계가 있기 때문에 일반적으로 큰 소의 논문을 참고한 다음에 스스로 조롱박을 보고 바가지를 그려서 실현한다.여기에서 실현된 Lenet의 구조는 볼륨 -->샘플링 –>볼륨 –>샘플링 –>전체 연결입니다.원 논문의 구조와 기본적으로 일치하다.권적핵의 크기도 참고한 원논문이다.구체적인 세부 사항은 앞서 발표한 논문 링크를 참고할 수 있다.여기에 Score의 감청 이벤트를 설정했습니다. 주로 훈련할 때 매번의 권한 갱신 후 손실 함수의 수렴 상황을 얻을 수 있습니다.뒤에 캡처가 있을 거예요.네트워크 구조를 정의한 후에 우리는 이전에 읽은 데이터에 대해 훈련과 분류의 정확성을 평가할 수 있다.먼저 코드를 살펴보십시오.이 부분은 비교적 이해하기 쉽다고 믿는다.매번 훈련이 한 바퀴 끝난 후에 우리는 테스트 집합에 대해 평가를 한 후에 이와 유사한 아래의 결과를 출력할 것이다.그림의 상반부는 구체적으로 분류된 통계로 옳고 그름의 그림 수량을 포함하여 모두 볼 수 있다.그리고 10라운드 과정을 거친 Lenet이 Mnist 데이터 세트에 대한 분류 정확도가 99%에 이르는 것을 볼 수 있습니다.그림이 안 올라가서 나는 바로 결과를 붙였다.그 중에서 우리는 최종적인 정확도를 보았다. 그리고 어떤 그림이 정확하게 분류되고, 어떤 그림이 잘못된 것인지.물론 우리는 훈련의 횟수를 늘리고 파라미터를 초과해서 더욱 최적화할 수 있지만 실제로 이런 결과는 이미 생산에 사용될 수 있다.총괄해 보다.사실 저를 포함한 많은 사람들이 깊이 있는 학습에 대해 잘 몰라요. 그때 csdn에 쓴 깊이 있는 학습과 관련된 블로그를 봤을 때 그 수준에 도달할 수 없다고 생각했던 기억이 납니다.그러나 사실 우리는 한 가지를 소홀히 했다. 깊이 있는 학습 자체가 아무리 복잡해도 알고리즘 모델이자 기계 학습이다.이것은 감지기, 논리 회귀 등 모델보다 훨씬 복잡하지만(사실 논리 회귀는 신경 네트워크 중의 한 신경원으로 볼 수 있으며 격려 함수의 역할을 충당하고 유사한 격려 함수가tanh,relu 등) 결국 그의 목적은 귀환, 분류, 데이터 압축 등 임무를 완성하는 것이다.그러니까 첫 번째 시도가 중요해.물론 우리는 복잡한 모델부터 시작하여 처음부터 현재 가장 유행하는 모델을 따라갈 수 없기 때문에 Mnist 식별의 예부터 느낌을 찾아본다.앞으로 Deeplearning4j로 스파크에 있는 사례도 Mnist부터 쓰겠습니다.공유하는 동시에 자신도 복습해 보세요…

So you have finished reading the deeplearning4j 예제 topic article, if you find this article useful, please share it. Thank you very much. See more: TensorFlow Java 예제, Deeplearning4j 한글, 이클립스 딥 러닝, Dl4j datasetiterator, DL4J Android, Java deep learning example, Nd4j docs, Deeplearning4j h5

Leave a Comment