2 Agosto 2019

tensorflow 자바 예제

LabelImage 공식 텐서플로우 예제를 사용하여 시작 그래프 모델로 예제 이미지에 레이블을 지정합니다. 파이썬의 Tensorflow를 사용하여 모델을 공급하고 학습할 수 있지만 Tensorflow 파이썬 패키지는 실제로 실제 작업을 수행하기 위해 C ++ 구현을 호출합니다. 따라서 Java 네이티브 인터페이스(JNI)를 사용하여 C++를 직접 호출하고 C++를 사용하여 그래프를 만들고 Java에서 모델의 가중치와 바이어스를 복원할 수 있습니다. 위의 코드 청크에서 기본 세션을 정의했지만 옵션에서도 전달할 수 있다는 것도 좋습니다. 예를 들어 구성 인수를 지정한 다음 ConfigProto 프로토콜 버퍼를 사용하여 세션에 대한 구성 옵션을 추가할 수 있습니다. TensorFlow의 핵심 API로 작업하는 것이 그래프의 크기가 증가함에 따라 매우 번거로울 수 있음을 확인하는 것은 어렵지 않습니다. 이를 위해 TensorFlow는 Keras와 같은 고급 API를 제공하여 복잡한 모델로 작업합니다. 불행히도, 아직 자바에서 케라스에 대한 공식적인 지원은 거의 없습니다. 이 예제에서는 TensorFlow를 사용하여 아파치 메이븐 프로젝트를 빌드하는 방법을 보여 주며 있습니다.

첫째, 프로젝트의 pom.xml 파일에 TensorFlow 종속성을 추가합니다. 몇 가지 단계가 있지만 3 개의 프로그래밍 언어 (Python, C ++ 및 Java)를 혼합 할 때 예상됩니다. 그러나 중요한 것은 그것을 할 수 있고, 상대적으로 간단하다는 것입니다. 텐서플로우 자바 프로그램을 실행하려면 JVM이 libtensorflow.jar 및 추출된 JNI 라이브러리에 액세스해야 합니다. TensorFlow 기계 학습 모델이 만들어지고 학습되는 기본 언어는 파이썬입니다. 그러나 많은 엔터프라이즈 서버 프로그램은 Java로 작성됩니다. 따라서 Java 프로그램에서 파이썬에서 학습한 Tensorflow 모델을 호출해야 하는 상황이 종종 발생합니다. 내 경우에는 save_def에서 인쇄 된 두 개의 마법 문자열이 저장 / Const:0이었습니다. 저장 /restore_all – 그래서 당신은 내 자바 코드에서 볼 수 있습니다. 다른 경우 Java 코드를 작성할 때 변경합니다. 평면 벡터는 텐서의 가장 간단한 설정입니다.

위에서 보았듯이 일반 벡터와 매우 유사하며 벡터 공간에서 자신을 발견하는 유일한 차이점이 있습니다. 이를 더 잘 이해하려면 2 X 1인 벡터가 있는 예제부터 살펴보겠습니다. 즉, 벡터는 한 번에 두 쌍을 이루는 실제 숫자 집합에 속합니다. 또는 다르게 명시되어 있는 두 공간의 일부입니다. 이러한 경우 좌표(x,y) 평면의 벡터를 화살표 또는 광선으로 나타낼 수 있습니다. 참고: Tensorflow 팀은 이제 Java 바인딩을 추가하기 시작했습니다. 자세한 내용은 https://github.com/tensorflow/tensorflow/tree/master/tensorflow/java 참조하십시오. 먼저 시도하고, 그것은 당신을 위해 작동하지 않는 경우, 여기에 와서 … 텐서플로우/모델 GitHub 리포지토리에서 추가 예제를 찾을 수 있습니다. 이 시점에서 모델이 준비되었습니다. 이제 이를 사용하여 예측을 수행할 수 있습니다. 이것은 파이썬에서 수행하는 방법과 유사합니다 – 모든 자리 표시자에 대한 값을 전달하고 출력 노드를 평가해야합니다.

차이점은 자리 표시자 및 출력 노드의 실제 이름을 알아야 한다는 것입니다. 파이썬에서 이러한 노드 고유 이름을 할당하지 않은 경우 Tensorflow는 해당 노드의 이름을 할당합니다. 작성된 trained_model.txt 파일을 보면 그들이 무엇인지 알 수 있습니다.

Contact us

Get in touch with us!