Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

TensorFlow와 Python으로 StackOverflow 질문 데이터셋의 모든 레이블 점수 예측하는 방법

TensorFlow는 구글(Google)에서 제공하는 머신러닝 프레임워크입니다. 오픈소스 프레임워크로서, Python과 함께 사용하여 다양한 알고리즘, 딥러닝 애플리케이션 등을 구현할 수 있으며 연구 목적과 실제 프로덕션 환경 모두에서 활용됩니다. TensorFlow는 복잡한 수학 연산을 빠르게 수행할 수 있도록 돕는 최적화 기법들을 갖추고 있는데, 이는 내부적으로 NumPy와 다차원 배열을 사용하기 때문입니다. 이러한 다차원 배열은 '텐서(tensor)'라고 불리며, 프레임워크는 심층 신경망(deep neural network) 작업도 지원합니다.

'tensorflow' 패키지는 Windows 환경에서 아래 명령어 한 줄로 설치할 수 있습니다.

pip install tensorflow

텐서(Tensor)란?

텐서는 TensorFlow에서 사용되는 데이터 구조로, 데이터 흐름 다이어그램에서 간(edge)을 연결하는 역할을 합니다. 이 다이어그램은 '데이터 플로우 그래프(Data flow graph)'라고 알려져 있습니다. 텐서는 본질적으로 다차원 배열 또는 리스트에 해당합니다.

텐서는 다음 세 가지 주요 속성으로 식별할 수 있습니다.

  • 랭크(Rank) − 텐서의 차원(dimensionality)을 나타냅니다. 텐서의 차수(order) 또는 정의된 텐서가 가진 차원의 개수로 이해할 수 있습니다.

  • 타입(Type) − 텐서 요소에 연관된 데이터 타입을 나타냅니다. 1차원, 2차원 또는 n차원 텐서일 수 있습니다.

  • 쉐이프(Shape) − 행(row)과 열(column)의 개수를 함께 나타냅니다.

아래 코드는 Google Colaboratory에서 실행했습니다. Google Colab(Colaboratory)은 브라우저에서 Python 코드를 실행할 수 있게 해주며, 별도의 설정이 필요 없고 GPU(그래픽 처리 장치)를 무료로 사용할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.

예제

다음은 코드 스니펫입니다.

print("Predicting a score for every label")
def get_string_labels(predicted_scores_batch):
   predicted_int_labels = tf.argmax(predicted_scores_batch, axis=1)
   predicted_labels = tf.gather(raw_train_ds.class_names, predicted_int_labels)
   return predicted_labels

코드 출처 − https://www.tensorflow.org/tutorials/load_data/text

출력 결과

Predicting a score for every label

설명

  • 사전에 학습시킨 모델 객체에서 'predict' 메서드를 호출합니다.

  • 이 메서드는 원시 문자열(raw string)을 입력으로 받아 모든 레이블(label)에 대한 점수(score)를 예측합니다.

  • 함수 내부에서는 tf.argmax를 사용해 가장 높은 점수를 받은 레이블을 찾아냅니다.

  • 그런 다음 tf.gather를 통해 정수 인덱스를 실제 클래스 이름(문자열 레이블)으로 변환하며, 최종 결과는 콘솔에 출력됩니다.