ホームページ >バックエンド開発 >Python チュートリアル >Python でのニューラル ネットワークの例
Python は、そのシンプルで柔軟な構文と強力なエコシステムとライブラリにより、科学技術コンピューティングや機械学習などの分野で常に広く使用され、愛されてきました。ニューラル ネットワークは機械学習の分野で重要な役割を果たしており、コンピューター ビジョン、自然言語処理、推奨システムなどの多くの分野で使用できます。この記事では、Python のニューラル ネットワークを紹介し、いくつかの例を示します。
ニューラル ネットワークは、動物の神経系をシミュレートする特徴を持つ深層学習モデルです。ニューラル ネットワークは複数のニューロンで構成されます。各ニューロンは関数に相当します。その入力は他のニューロンからの出力であり、活性化関数によって処理されて出力が生成されます。ニューラル ネットワークは、バックプロパゲーション アルゴリズムを利用して重みとバイアスを継続的に調整し、モデルをデータによりよく適合させ、予測や分類を行うことができます。
TensorFlow は、ニューラル ネットワークやその他の機械学習アルゴリズムを構築するために Google が立ち上げた人気の深層学習フレームワークです。 TensorFlow は、もともと Google 社内の研究者向けに開発されたもので、オープンソース化されてからすぐに最も人気のある深層学習フレームワークの 1 つになりました。
TensorFlow では、次の手順を使用してニューラル ネットワークを作成できます:
次に、TensorFlow を使用して実装されたニューラル ネットワークの例を 2 つ紹介します。
手書き数字認識はコンピューター ビジョンの分野で重要な問題であり、ニューラル ネットワークはこの問題に関して良好な結果を達成しています。 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 つのカテゴリがあることに注意してください。
以下はスパム フィルターの完全なコードです:
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 サイトの他の関連記事を参照してください。