「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > TensorFlow による機械学習の橋渡し: Python から JavaScript へ

TensorFlow による機械学習の橋渡し: Python から JavaScript へ

2024 年 11 月 1 日に公開
ブラウズ:805

Bridging Machine Learning with TensorFlow: From Python to JavaScript

TensorFlow で機械学習を実現する

JavaScript 開発者として、機械学習に飛び込むのは、思っているほど難しいことではありません。 Node.js パッケージを使用してすべてを処理することは技術的には可能ですが、Python ML エコシステムは無視するにはあまりにも豊富で確立されています。さらに、Python は非常に使いやすいです。したがって、バックエンドでの重労働には Python を使用するのが合理的です。モデルの準備ができたら、それをフロントエンドに適した形式にエクスポートし、クライアントにロードして予測を実行できます。

モデルの生成

この投稿では、Twitter のフォロワー数に基づいてアーティストの人気を予測するモデルを構築します。

最初のステップは、データセットを入手することです。このプロジェクトでは、次のような Artists.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

ご覧のとおり、ここには 2 つの重要な値があります:twitter_followers と Popularity。これにより、シーケンス モデルが適切に設定されます。x は twitter_followers、y は人気になります。

シーケンス モデルは、モデルを構築するための最も簡単なオプションの 1 つです。最終的には特定の使用例によって選択が決まりますが、私はシンプルにして、今のところこのアプローチに固執しています。

バックエンドの構築

モデルを構築するときは、取り組む必要のある基本的なタスクがいくつかあります:

  • データをクリーンアップまたは正規化します
  • データをトレーニング (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 コードは非常に単純です。データの分割、モデルの取得、評価、そして最終的な保存を処理する main 関数があります。

簡単に言うと、これらはモデルを作成するための重要な手順です。しかし、現実的に考えてみましょう。実際に機能するモデルを構築することは、芸術であると同時に科学でもあります。ここでの私の目標は、Python を使い始めるのがいかに簡単かを示すことです。ただし、良好なパフォーマンスを発揮するモデルを作成するには、堅牢なデータセットの用意、データのクリーニングと正規化、適切なモデルと設定の選択、トレーニングするためのコンピューティング能力の確保など、多くのことが必要になります。これらすべてのタスクには、多大な時間と労力の投資が必要です!

フロントエンドでのモデルの使用

モデルをトレーニングして保存したので、次はそれをフロントエンドに取り込みます。このステップでは、モデルを Web に適した形式で読み込みます。これにより、ブラウザーで直接予測を実行できるようになります。 TensorFlow.js を使用している場合でも、別のライブラリを使用している場合でも、機械学習を Web アプリに統合すると、可能性の世界が広がります。その方法を詳しく見ていきましょう!

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

このセットアップにより、Web アプリケーションに必要なファイルに簡単にアクセスできるようになります。

JavaScript: 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;
};

前述の通り、このモデルはTwitterのフォロワー数をもとに「人気度を予測する」ことを目的としています。これは単純な例のように思えるかもしれませんが、バックエンドでモデルを生成し、それをフロントエンドで使用する方法を効果的に示しています。

get Popularity が入力をどのように処理するかを少し見てみましょう。しかし、重要な行は、model.predict(x) です。これは、モデルを使用して、入力 x に基づいて値 (y) を予測します。

デモ ページにアクセスして、いくつかの 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