( ※ 본 포스팅은 저자 개인의 한정적인 지식을 바탕으로 쓰여진 글입니다. 내용의 오류나, 오타 등을 언제든지 알려주시면 감사하겠습니다.)
파이썬에서 TensorFlow를 이용한 학습 모델을 Java에서 실행할 수 있다고 합니다.
이번 포스팅에서는
텐서플로우 모델을 자바에서 실행하기 위해 설치를 다뤄보고
간단한 예제인 HelloTF.java 를 실행해보려고 합니다.
주의사항은
[이전 포스팅] 아나콘다로 윈도우즈에 텐서플로우 설치하기
2017/12/06 - [TensorFlow] - [텐서플로우] 아나콘다를 이용하여 윈도우즈에 텐서플로우 설치하기
이전 글과 같이 windows 64bit 에서만 가능하다고 하네요.
실행환경
- OS : 윈도우7 (Windows 7 64bit)
- 이클립스 (Eclipse Jee Oxygen)
- 텐서플로우 (TensorFlow 1.4.0)
- 자바 (Java 1.8.0)
1. 파일 다운로드
https://www.tensorflow.org/install/install_java#install_on_windows
(2020.05.18 수정)
(2017년도 화면)
링크를 타고 들어가 libtensorflow.jar 를 눌러 다운로드 받습니다.
압축 파일을 풀고 아래와 같은 상태로 만들어 줍니다.
2. 프로젝트 생성
새로운 자바 프로젝트를 생성한 다음 클래스를 생성합니다.
생성된 클래스에 다음 코드를 입력합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | package recom.tensorflow.tutorial; import org.tensorflow.Graph; import org.tensorflow.Session; import org.tensorflow.Tensor; import org.tensorflow.TensorFlow; public class HelloTF { public static void main(String[] args) throws Exception { try (Graph g = new Graph()) { final String value = "Hello T " + TensorFlow.version(); // Construct the computation graph with a single operation, a constant // named "MyConst" with a value "value". try (Tensor t = Tensor.create(value.getBytes("UTF-8"))) { // The Java API doesn't yet include convenience functions for adding operations. g.opBuilder("Const", "MyConst").setAttr("dtype", t.dataType()).setAttr("value", t).build(); } // Execute the "MyConst" operation in a Session. try (Session s = new Session(g); Tensor output = s.runner().fetch("MyConst").run().get(0)) { System.out.println(new String(output.bytesValue(), "UTF-8")); } } } } | cs |
현재 상태에서는 import 부분이 빨간줄로 떠있을 것입니다.
3. 텐서플로우 설치
맨 처음 다운받았던 파일들을 적용할 차례입니다.
먼저 jar 파일을 import 하기 위해서 프로젝트 폴더로 복사합니다.
프로젝트를 우클릭해서 properties 메뉴로 들어가면 아래와 같은 화면이 나옵니다.
오른쪽에 Add JARs... 를 클릭하시고 ④번과 같이 추가해주시면 됩니다.
정상적으로 jar 파일이 추가되면 import에 있던 빨간줄이 사라지게 된 것을 볼 수 있습니다.
이제 dll 파일을 적용하기 위해 해더파일을 생성하겠습니다.
이클립스 상단 매뉴바에 재생버튼과 빨간 가방? 같은 것이 함께 있는 아이콘을 클릭하고
External Tools Configurations... 에 들어갑니다.
Program 부분을 클릭하고 왼쪽 위에 빈 종이를 누르면
새로운 configuration이 생성됩니다.
Location 부분에 본인의 javah.exe 위치를 설정하고,
(제 기준으로 > C:\Program Files\Java\jdk1.8.0_131\bin\javah.exe 에 있었고, 자신의 jdk 위치에 가시면 됩니다.)
Working Directory 부분에 현재 프로젝트의 bin 위치를 설정합니다.
빨간네모는 안되어있지만, Arguments에 -jni -verbose ${java_type_name} 를 입력하고
Apply > Run
정상적으로 실행이되면 아래와 같은 메시지가 출력되고,
HelloTF.h 헤더파일이 현재 프로젝트 bin 위치에 생성된 것을 확인합니다.
(혹시 에러가 난다면....)
[이전 포스팅] 아나콘다로 윈도우즈에 텐서플로우 설치하기
2019/08/16 - [머신러닝/TensorFlow] - 텐서플로우 JAVA 실행 오류
4. JNI 설정 및 실행
마지막으로 jni 파일을 설정해 보도록 합시다.
JNI(Java Native Interface)를 간단히 설명드리자면,
자바 가상 머신(JVM)에 실행되는 자바 코드를 다른 언어들로 구현된 라이브러리에 의해 호출되거나 호출할 수 있는 프로그래밍 프레임 워크입니다.
(출처 위키백과 :
맨 처음에 다운받아 압축 풀었던 폴더에 있는
tensorflow_jni.dll 파일을 프로젝트 위치에 복사해 줍니다.
다시 이클립스로 돌아와서
Run Configurations 메뉴를 열고 왼쪽 부분에 Java Application이 제대로 선택 되었는지 확인 후
아래 그림과 같이 Arguments 탭 > VM arguments 에 -Djava.library.path=. 를 입력해 줍니다.
마지막으로 Run 버튼을 눌러 실행시켜주면!
아래와 같이 Hello from 1.4.0 이 출력되는 것을 보실 수 있습니다.
읽어주셔서 감사합니다. : )
텐서플로우 inter_op_parallelism_threads (2) | 2019.08.09 |
---|---|
윈도우에서 텐서플로우 원하는 버전 설치방법 (0) | 2018.08.17 |
텐서플로우(TensorFlow) 예제코드와 머신러닝(Machine Learning)학습 개념 (2) | 2018.01.31 |
텐서플로우 Python 모델 Java 사용 방법 (25) | 2017.12.12 |
텐서플로우 윈도우즈 설치 방법 (0) | 2017.12.06 |