본문 바로가기
Programming

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

by daewooki 2021. 7. 30.
반응형

Eclipse Deeplearning4j 자바 자바 가상머신 용으로 작성된 딥러닝 라이브러리이며 딥러닝 알고리즘을 광범위하게 지원하는 컴퓨팅 프레임워크이다.

 

Keras와 Tensorflow를 이용해서 학습하고 생성된 모델을 이용하여 동위원소 클러스터를 예측하는 java 소프트웨어를 개발하기 위해서 DL4J를 사용하게 되었다. 

 

간단하게 예측하는 프로그램을 개발하기 위한 DL4J 라이브러리의 사용법은 매우 간단하다.

 

 

먼저, 자바 Maven을 설치해야한다. 링크 : https://maven.apache.org/download.cgi

 

Maven – Download Apache Maven

Downloading Apache Maven 3.8.1 Apache Maven 3.8.1 is the latest release and recommended version for all users. The currently selected download mirror is https://mirror.navercorp.com/apache/. If you encounter a problem with this mirror, please select anothe

maven.apache.org

설치 이후, jdk처럼 system variable setting을 해야한다.

 

이후 command에서 mvn --version을 확인했을 때 정상적으로 버전이 노출되면 설치가 완료된 것이다.

 

 

DL4J는 jdk 1.7 이상에서 사용하기를 권장한다.

 

다음으로 ide에서 새로운 project를 생성한다. (필자는 eclipse 를 사용하고 있음)

 

다음으로 group id, artifact  id 입력 후  finish를 눌러주면 된다.

 

 

프로젝트가 생성되었으면 pom.xml 에 dependency를 삽입해주어야한다.

 

<dependency>
	<groupId>org.deeplearning4j</groupId>
	<artifactId>deeplearning4j-core</artifactId>
	<version>1.0.0-beta4</version>
</dependency>
<dependency>
	<groupId>org.deeplearning4j</groupId>
	<artifactId>deeplearning4j-modelimport</artifactId>
	<version>1.0.0-beta4</version>
</dependency>
<dependency>
	<groupId>org.nd4j</groupId>
	<artifactId>nd4j-native-platform</artifactId>
	<version>1.0.0-beta4</version>
</dependency>

<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-api</artifactId>
	<version>1.7.5</version>
</dependency>
<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-simple</artifactId>
	<version>1.6.4</version>
</dependency>

deeplearning4j-core를 추가해주면 전체 기능들을 사용할 수 있다.

만약 모든 기능을 사용하지 않을 것이면 core를 import하는데에 시간이 오래걸리므로 상위에 있는 deeplearning4j-core만 제외하고 작성해주면 된다.

 

필자는 학습 model만 import하여 사용할 것이면 빨간 줄만 추가 해었다. 

 

pom.xml 에 dependency를 수정해주었으면

pom.xml  우클릭 →  run as maven build 를 진행한다.

 

완료가 되면 maven dependencies에  라이브러리들이 생겼을 것이다. 

 

 

이제 import하고자 하는 keras 및 tensorflow로 학습된 모들을 해당 프로젝트 폴더에 넣어주고 import를 해주면 된다. 

 

여기서는 keras hdf5 모델로 사용하겠다. 

 

Keras 학습 모델이 sequential 모델인지, functional model인지 확인 후에 모델에 맞게 import를 시켜주어야한다.

 

 

모델이 import 되었으면 모델에 input으로 들어갈 데이터를 세팅해주어야하는데, 

input data는 ND4J 라이브러리의 INDArray를 사용해야한다. 

 

상황에 맞게 input 배열 생성하면 된다.

 

링크 참고: https://deeplearning4j.konduit.ai/nd4j/how-to-guides/basics

 

Basics

Elementwise Operations And Basic Usage

deeplearning4j.konduit.ai

 

** input 배열 생성 예시

row, column 사이즈를 지정하고 0이나 1로 초기화 하거나 create로 값을 초기화 해주어야한다. 

이후, put 함수를 통해서 array에 넣어주면 된다.

 

여기서는 input으로 13개의 numerical 데이터가 들어가야하므로, 0으로 초기화를 해준 후에 각 index에 값을 넣어주었다. 

 

마지막으로 import 된 모델에  output 함수를 이용해서 예측을 진행할 수 있다.

INDArray형 배열을 output 함수에 파라미터로 넣어주면 INDArray형 배열로 return이 된다.

각 INDArray의 index에 해당하는 input에 대해 이진 분류 학습을 진행한 모델로 0~1 사이의 값을 내뱉는다.

 

속도는 조금 오래걸리는 것 같다. 확실히 파이썬에서 돌릴 때보다 2배 이상 차이는 나는 것 같다. 

하지만 어쩔 수 없이 자바 프로그램으로 돌려야한다고 하면, DL4J 라이브러리를 이용해서 돌릴 수 있다.

내가 만든 소프트웨어도 누군가는 잘 사용하고 있다는 점~ 뿌듯 :)

 

상황에 따라 필요한 함수나 예제는 https://deeplearning4j.org/ 참고하면 좋다.

git 에도 여러 예시들이 있다.  https://github.com/deeplearning4j/dl4j-examples

 

GitHub - eclipse/deeplearning4j-examples: Deeplearning4j Examples (DL4J, DL4J Spark, DataVec)

Deeplearning4j Examples (DL4J, DL4J Spark, DataVec) - GitHub - eclipse/deeplearning4j-examples: Deeplearning4j Examples (DL4J, DL4J Spark, DataVec)

github.com

 

 

 

 

반응형

댓글