Rumah > Artikel > pembangunan bahagian belakang > Contoh algoritma rangkaian saraf dalam Python
Contoh algoritma rangkaian saraf dalam Python
Rangkaian saraf ialah model kecerdasan buatan yang menyerupai sistem saraf manusia Ia boleh mengenal pasti corak secara automatik dan melaksanakan tugas seperti pengelasan, regresi dan pengelompokan dengan mempelajari sampel data. . Sebagai bahasa pengaturcaraan yang mudah dipelajari dan mempunyai perpustakaan pengkomputeran saintifik yang berkuasa, Python cemerlang dalam membangunkan algoritma rangkaian saraf. Artikel ini akan memperkenalkan contoh algoritma rangkaian saraf dalam Python.
Pustaka rangkaian saraf yang biasa digunakan dalam Python termasuk Keras, Tensorflow, PyTorch, dll. Pustaka Keras adalah berdasarkan Tensorflow, yang boleh memudahkan proses membina rangkaian saraf , jadi artikel ini akan memilih perpustakaan Keras sebagai alat pembangunan untuk algoritma rangkaian saraf. Sebelum menggunakan perpustakaan Keras, anda perlu memasang perpustakaan Tensorflow sebagai bahagian belakang. Jalankan arahan berikut pada baris arahan untuk memasang perpustakaan bergantung:
pip install tensorflow pip install keras
Sebelum melatih rangkaian saraf, data perlu dipraproses . Prapemprosesan data biasa termasuk normalisasi data, pemprosesan nilai data yang tiada, pengekstrakan ciri data, dsb. Dalam artikel ini, kami akan menggunakan set data iris sebagai contoh demonstrasi Set data mengandungi 150 rekod, setiap rekod mempunyai empat ciri: panjang sepal, lebar sepal, panjang kelopak, lebar kelopak, dan label klasifikasi yang sepadan: Iris Setosa, Iris. Versicolour, Iris Virgina. Dalam set data ini, setiap rekod adalah daripada jenis angka, jadi kami hanya perlu menormalkan data.
from sklearn.datasets import load_iris from sklearn.preprocessing import MinMaxScaler import numpy as np # 导入数据集 data = load_iris().data labels = load_iris().target # 归一化数据 scaler = MinMaxScaler() data = scaler.fit_transform(data) # 将标签转化为 one-hot 向量 one_hot_labels = np.zeros((len(labels), 3)) for i in range(len(labels)): one_hot_labels[i, labels[i]] = 1
Di Keras, anda boleh menggunakan model Sequential untuk membina model rangkaian saraf. Dalam model ini, kita boleh menambah berbilang lapisan, setiap lapisan mempunyai peranan tertentu, seperti lapisan bersambung sepenuhnya, lapisan fungsi pengaktifan, lapisan Tercicir, dsb. Dalam contoh ini, kami menggunakan dua lapisan bersambung sepenuhnya dan satu lapisan keluaran untuk membina model rangkaian saraf, di mana bilangan neuron dalam lapisan tersembunyi ialah 4.
from keras.models import Sequential from keras.layers import Dense, Dropout from keras.optimizers import Adam # 构建神经网络模型 model = Sequential() model.add(Dense(4, activation='relu')) model.add(Dense(4, activation='relu')) model.add(Dense(3, activation='softmax')) # 配置优化器和损失函数 optimizer = Adam(lr=0.001) model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy'])
Sebelum melatih model, kita perlu membahagikan set data kepada set latihan dan set ujian untuk menilai ketepatan model. Dalam contoh ini, kami menggunakan 80% daripada data sebagai set latihan dan 20% daripada data sebagai set ujian. Semasa latihan, kita perlu menentukan parameter seperti saiz kelompok dan bilangan lelaran untuk mengawal kelajuan latihan dan ketepatan model.
from sklearn.model_selection import train_test_split # 将数据集分为训练集和测试集 train_data, test_data, train_labels, test_labels = train_test_split(data, one_hot_labels, test_size=0.2) # 训练神经网络 model.fit(train_data, train_labels, batch_size=5, epochs=100) # 评估模型 accuracy = model.evaluate(test_data, test_labels)[1] print('准确率:%.2f' % accuracy)
Kod lengkap contoh ini adalah seperti berikut:
from sklearn.datasets import load_iris from sklearn.preprocessing import MinMaxScaler from sklearn.model_selection import train_test_split import numpy as np from keras.models import Sequential from keras.layers import Dense, Dropout from keras.optimizers import Adam # 导入数据集 data = load_iris().data labels = load_iris().target # 归一化数据 scaler = MinMaxScaler() data = scaler.fit_transform(data) # 将标签转化为 one-hot 向量 one_hot_labels = np.zeros((len(labels), 3)) for i in range(len(labels)): one_hot_labels[i, labels[i]] = 1 # 将数据集分为训练集和测试集 train_data, test_data, train_labels, test_labels = train_test_split(data, one_hot_labels, test_size=0.2) # 构建神经网络模型 model = Sequential() model.add(Dense(4, activation='relu')) model.add(Dense(4, activation='relu')) model.add(Dense(3, activation='softmax')) # 配置优化器和损失函数 optimizer = Adam(lr=0.001) model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy']) # 训练神经网络 model.fit(train_data, train_labels, batch_size=5, epochs=100) # 评估模型 accuracy = model.evaluate(test_data, test_labels)[1] print('准确率:%.2f' % accuracy)
Artikel ini memperkenalkan contoh algoritma rangkaian saraf dalam Python dan menggunakan set data iris sebagai contoh untuk demonstrasi. Semasa proses pelaksanaan, kami menggunakan perpustakaan Keras dan perpustakaan Tensorflow sebagai alat pembangunan rangkaian saraf dan menggunakan perpustakaan MinMaxScaler untuk menormalkan data. Keputusan contoh ini menunjukkan bahawa model rangkaian saraf kami mencapai ketepatan 97.22%, membuktikan keberkesanan dan kebolehgunaan rangkaian saraf.
Atas ialah kandungan terperinci Contoh algoritma rangkaian saraf dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!