"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > TensorFlow를 사용한 기계 학습 연결: Python에서 JavaScript까지

TensorFlow를 사용한 기계 학습 연결: Python에서 JavaScript까지

2024-11-01에 게시됨
검색:568

Bridging Machine Learning with TensorFlow: From Python to JavaScript

TensorFlow를 통해 머신러닝에 생명력 불어넣기

JavaScript 개발자로서 머신러닝에 뛰어드는 것은 생각보다 어렵지 않습니다. Node.js 패키지로 모든 것을 처리하는 것이 기술적으로 가능하지만 Python ML 생태계는 무시하기에는 너무 풍부하고 잘 확립되어 있습니다. 게다가 Python은 작업하기에 아주 좋습니다. 따라서 백엔드에서 무거운 작업을 수행하려면 Python을 사용하는 것이 합리적입니다. 모델이 준비되면 프런트엔드 친화적인 형식으로 내보내고 클라이언트에 로드하여 예측을 실행할 수 있습니다.

모델 생성

이번 게시물에서는 트위터 팔로워 수를 기준으로 아티스트의 인기를 예측하는 모델을 구축해 보겠습니다.

첫 번째 단계는 데이터세트를 확보하는 것입니다. 이 프로젝트에서는 다음과 같은 Artist.csv 파일을 사용합니다:

twitter_followers,popularity,handle
111024636,94,justinbieber
107920365,91,rihanna
106599902,89,katyperry
95307659,97,taylorswift13
66325495,87,selenagomez
66325135,71,selenagomez
60943147,83,jtimberlake
54815915,82,britneyspears
53569307,85,shakira

보시다시피 여기에는 twitter_followers와 인기라는 두 가지 핵심 값이 있습니다. 이는 x가 twitter_followers이고 y가 인기가 되는 시퀀스 모델을 훌륭하게 설정합니다.

시퀀스 모델은 모델을 구축하는 가장 쉬운 옵션 중 하나입니다. 선택은 궁극적으로 특정 사용 사례에 따라 다르지만 지금은 단순하게 유지하고 이 접근 방식을 고수하고 있습니다.

백엔드 구축

모델을 구축할 때 처리해야 할 몇 가지 기본 작업이 있습니다.

  • 데이터 정리 또는 정규화
  • 데이터를 교육(80%)과 테스트(20%)로 분할
  • 옵티마이저 및 손실 기능과 같은 설정과 함께 모델을 선택하세요.
  • 모델 학습(맞춤)
  • 모델 평가
  • 모델 저장

다음 코드는 전체 그림은 아니지만 이러한 작업에 대한 좋은 개요를 제공합니다. 전체 코드는 Github에서 확인하실 수 있습니다.

Python: TensorFlow 시작하기

def get_model(x, y):
    x_normalized = layers.Normalization(
        axis=None,
    )
    x_normalized.adapt(np.array(x))

    model = tensorflow.keras.Sequential([x_normalized, layers.Dense(units=1)])

    model.compile(
        optimizer=tensorflow.keras.optimizers.Adam(learning_rate=0.1),
        loss="mean_squared_error",
    )

    model.fit(
        x,
        y,
        epochs=2,
        verbose=0,
        validation_split=0.2,
    )

    return model

def main:
  train_features, test_features, train_labels, test_labels = split_data(dataset)

  model = get_model(
      train_features["twitter_followers"],
      train_labels,
  )

  test_loss = model.evaluate(
      test_features["twitter_followers"], test_labels, verbose=2
  )

  model.export("./saved_model")

보시다시피 Python 코드는 매우 간단합니다. 데이터 분할, 모델 가져오기, 평가 및 최종 저장을 처리하는 주요 기능이 있습니다.

간단히 말하면 모델을 만드는 데 필수적인 단계입니다. 하지만 현실적으로 생각해 봅시다. 실제로 작동하는 모델을 구축하는 것은 예술이자 과학입니다. 여기서 나의 목표는 Python을 시작하는 것이 얼마나 쉬운지 보여주는 것입니다. 그러나 탄탄한 데이터세트 보유, 데이터 정리 및 정규화, 올바른 모델 및 설정 선택, 모델 훈련을 위한 컴퓨팅 성능 확보 등 잘 수행되는 모델을 만드는 데는 많은 노력이 필요합니다. 이 모든 작업에는 상당한 시간과 노력의 투자가 필요합니다!

프런트엔드에서 모델 사용

이제 모델을 훈련하고 저장했으므로 이를 프런트엔드로 가져올 차례입니다. 이 단계에서는 웹에 적합한 형식으로 모델을 로드하여 브라우저에서 바로 예측을 실행할 수 있습니다. TensorFlow.js를 사용하든 다른 라이브러리를 사용하든 머신러닝을 웹 앱에 통합하면 가능성의 세계가 열립니다. 그 방법을 자세히 알아보겠습니다!

TensorFlow는 저장된 모델을 JSON 및 바이너리로 변환하는 데 도움이 되는 tensorflowjs_converter라는 npm 패키지를 제공합니다.

tensorflowjs_converter --input_format=tf_saved_model model/saved_model out/public
  • tf_saved_model: 모델을 저장하는 데 사용되는 형식입니다.
  • model/saved_model: Python 코드 실행 시 모델이 저장된 디렉터리입니다.
  • out/public: 프런트엔드 친화적인 파일이 저장되는 출력 디렉터리입니다. 폴더 구조는 다음과 같습니다.
ls -la out/public

group1-shard1of1.bin
model.json

이 설정을 사용하면 웹 애플리케이션에 필요한 파일에 쉽게 액세스할 수 있습니다.

자바스크립트: TensorFlowJS 사용

Github에서 전체 코드를 확인하실 수 있습니다.

const model = await tensorflow.loadGraphModel("model.json");

const getPopularity = (followers) => {
  const followers = 1_000;
  const normalized = followers;
  const x = tensorflow.tensor(normalized).reshape([-1, 1]);

  const result = model.predict(x);
  const values = result.arraySync();

  const y = values[0][0].toFixed(2) * 100;
  const popularity = y;

  return popularity;
};

앞서 언급했듯이 이 모델은 트위터 팔로어 수를 기반으로 '인기 예측'을 목표로 합니다. 간단한 예처럼 보일 수 있지만 백엔드에서 모델을 생성하고 프런트엔드에서 사용하는 방법을 효과적으로 보여줍니다.

getPopularity가 입력을 처리하는 방법을 살펴보세요. 핵심 라인은 모델을 사용하여 입력 x를 기반으로 값(y)을 예측하는 model.predict(x)입니다.

데모 페이지로 가서 몇 가지 Twitter 핸들을 사용해 보세요. 모델이 팔로어 수를 기반으로 인기를 어떻게 예측하는지 보는 재미있는 방법입니다.

결론

TensorFlow는 백엔드 및 프런트엔드 개발을 위한 도구를 제공하는 멋진 라이브러리입니다. 모든 JavaScript 개발자는 Python 또는 유사한 언어를 사용하여 모델을 생성한 다음 예측 실행을 위해 해당 모델을 프런트엔드로 쉽게 가져올 수 있습니다.

머신러닝은 많은 지식이 필요한 광범위한 분야이지만 TensorFlow와 같은 도구는 소프트웨어와 머신러닝 개발자 간의 격차를 해소하는 데 도움이 됩니다. ML을 프로젝트에 통합하려는 사람들의 여정이 훨씬 더 원활해집니다!

릴리스 선언문 이 기사는 https://dev.to/garciadiazjaime/bridging-machine-learning-with-tensorflow-from-python-to-javascript-25hp?1에 복제되어 있습니다. 침해가 있는 경우에는 [email protected]으로 문의하시기 바랍니다. 그것을 삭제하려면
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3