Eclipse Deeplearning4j는 자바와 자바 가상머신 용으로 작성된 딥러닝 라이브러리이며 딥러닝 알고리즘을 광범위하게 지원하는 컴퓨팅 프레임워크이다.
Keras와 Tensorflow를 이용해서 학습하고 생성된 모델을 이용하여 동위원소 클러스터를 예측하는 java 소프트웨어를 개발하기 위해서 DL4J를 사용하게 되었다.
간단하게 예측하는 프로그램을 개발하기 위한 DL4J 라이브러리의 사용법은 매우 간단하다.
먼저, 자바 Maven을 설치해야한다. 링크 : https://maven.apache.org/download.cgi
설치 이후, 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
** 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
'Programming' 카테고리의 다른 글
[챗봇] 카카오톡 i 오픈 빌더로 카카오톡 챗봇 만들기(노서버, 노코딩) (0) | 2021.08.08 |
---|---|
Software Engineering | 소프트웨어 공학 개론 - 2 (0) | 2021.08.04 |
[Flask Web] 크롬 SameSite 에러 발생 해결법(에러: Indicate whether to send a cookie in a cross-site request by specifying its SameSite attribute) (0) | 2021.07.29 |
[git] git add 중 Warning: CRLF will be replaced by LF 해결 방법 (0) | 2021.07.07 |
Software Engineering | 소프트웨어 공학 개론 - 1 (0) | 2021.06.25 |
댓글