ホームページ  >  記事  >  バックエンド開発  >  Python でのニューラル ネットワークの例

Python でのニューラル ネットワークの例

WBOY
WBOYオリジナル
2023-06-10 13:21:452277ブラウズ

Python は、そのシンプルで柔軟な構文と強力なエコシステムとライブラリにより、科学技術コンピューティングや機械学習などの分野で常に広く使用され、愛されてきました。ニューラル ネットワークは機械学習の分野で重要な役割を果たしており、コンピューター ビジョン、自然言語処理、推奨システムなどの多くの分野で使用できます。この記事では、Python のニューラル ネットワークを紹介し、いくつかの例を示します。

ニューラル ネットワークとは

ニューラル ネットワークは、動物の神経系をシミュレートする特徴を持つ深層学習モデルです。ニューラル ネットワークは複数のニューロンで構成されます。各ニューロンは関数に相当します。その入力は他のニューロンからの出力であり、活性化関数によって処理されて出力が生成されます。ニューラル ネットワークは、バックプロパゲーション アルゴリズムを利用して重みとバイアスを継続的に調整し、モデルをデータによりよく適合させ、予測や分類を行うことができます。

TensorFlow

TensorFlow は、ニューラル ネットワークやその他の機械学習アルゴリズムを構築するために Google が立ち上げた人気の深層学習フレームワークです。 TensorFlow は、もともと Google 社内の研究者向けに開発されたもので、オープンソース化されてからすぐに最も人気のある深層学習フレームワークの 1 つになりました。

TensorFlow では、次の手順を使用してニューラル ネットワークを作成できます:

  1. データ セットの準備: データ セットは、トレーニング セットとトレーニング セットの 2 つの部分に分割する必要があります。お試しセット。トレーニング セットはモデルのトレーニングに使用され、テスト セットはモデルの精度をテストするために使用されます。
  2. ニューラル ネットワークの作成: Python を使用してニューラル ネットワークを作成および実装できます。ニューラル ネットワーク モデルは、TensorFlow API を使用して構築できます。
  3. モデルをトレーニングする: ニューラル ネットワーク モデルをトレーニングして、新しいデータの出力を予測します。これは、確率的勾配降下法アルゴリズムを使用し、バックプロパゲーションを実行し、モデルの重みとバイアスを継続的に更新することによって実行できます。
  4. モデルをテストする: テスト セットを使用してモデルをテストし、その精度を確認します。精度、再現率、F1 スコアなど、さまざまな指標を使用してモデルのパフォーマンスを評価できます。

次に、TensorFlow を使用して実装されたニューラル ネットワークの例を 2 つ紹介します。

ニューラル ネットワークの例 1: 手書き数字認識

手書き数字認識はコンピューター ビジョンの分野で重要な問題であり、ニューラル ネットワークはこの問題に関して良好な結果を達成しています。 TensorFlow では、60,000 個の 28x28 グレースケール画像と対応するラベルが含まれる MNIST データセットを使用してニューラル ネットワークをトレーニングできます。

まず、TensorFlow ライブラリと NumPy ライブラリをインストールする必要があります。以下は手書き数字認識の完全なコードです:

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

#创建模型
x = tf.placeholder(tf.float32, [None, 784])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
y = tf.nn.softmax(tf.matmul(x, W) + b)

#定义损失函数和优化器
y_actual = tf.placeholder(tf.float32, [None, 10])
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_actual, logits=y))
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(loss)

#初始化变量
init = tf.global_variables_initializer()

#训练模型
sess = tf.Session()
sess.run(init)
for i in range(1000):
    batch_xs, batch_ys = mnist.train.next_batch(100)
    sess.run(train_step, feed_dict={x: batch_xs, y_actual: batch_ys})

#评估模型
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_actual,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_actual: mnist.test.labels}))

この例では、まずデータセット MNIST を準備し、次に 784 の入力と 10 の出力を含む単純なニューラル ネットワーク モデルを作成しました。次に、損失関数とオプティマイザーを定義し、トレーニング データをトレーニング用のモデルに入力しました。最後に、テストデータに対してテスト評価を実行し、92.3%の精度が得られました。

ニューラル ネットワークの例 2: スパム フィルター

現在、ほぼ全員がメール システムを使用していますが、誰もがスパムの問題に直面しています。スパム フィルターは、電子メールがスパムかどうかをチェックするプログラムです。ニューラル ネットワークを使用してスパム フィルターを構築する方法を見てみましょう。

まず、スパムと非スパムとしてマークされた電子メールを含むスパム データ セットを準備する必要があります。スパム フィルタを構築する場合、メッセージには非スパムとスパムの 2 つのカテゴリがあることに注意してください。

以下はスパム フィルターの完全なコードです:

import numpy as np
import pandas as pd
import tensorflow as tf
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

#读取数据集
data = pd.read_csv('spam.csv')
data = data.drop(['Unnamed: 2', 'Unnamed: 3', 'Unnamed: 4'], axis=1)

#转换标签
data['v1'] = data['v1'].map({'ham': 0, 'spam': 1})

#划分数据集
X_train, X_test, y_train, y_test = train_test_split(data['v2'], data['v1'], test_size=0.33, random_state=42)

#创建神经网络模型
max_words = 1000
tokenize = tf.keras.preprocessing.text.Tokenizer(num_words=max_words, char_level=False)
tokenize.fit_on_texts(X_train)

x_train = tokenize.texts_to_matrix(X_train)
x_test = tokenize.texts_to_matrix(X_test)

model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(512, input_shape=(max_words,), activation='relu'))
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.Dense(256, activation='sigmoid'))
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])

#训练模型
model.fit(x_train, y_train,
          batch_size=32,
          epochs=5,
          validation_data=(x_test, y_test))

#评估模型
y_predict = model.predict(x_test)
print("Accuracy:", accuracy_score(y_test, y_predict.round()))

この例では、sklearn の train_test_split() メソッドを使用してデータ セットを分割し、Keras ライブラリのテキスト前処理ツールを使用します。データセットを行列に変換します (ワンホット エンコーディング)。次に、Sequential を使用してニューロンを宣言し、そのパラメーターを設定します。最後に、トレーニング済みモデルを使用してテスト データを予測し、98.02% の精度が得られるように評価しました。

結論

Python のニューラル ネットワークは、画像認識、スパム フィルターなどのさまざまなアプリケーションで使用できる強力な技術です。 TensorFlow を使用すると、ニューラル ネットワーク モデルを簡単に作成、トレーニング、テストし、満足のいく結果を得ることができます。機械学習に対する人々の需要が高まるにつれて、ニューラル ネットワーク テクノロジーはより重要なツールとなり、将来のアプリケーション シナリオでより広く使用されるようになります。

以上がPython でのニューラル ネットワークの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。