Rumah >pembangunan bahagian belakang >Tutorial Python >Contoh rangkaian saraf dalam Python
Python sentiasa digunakan dan digemari secara meluas kerana sintaksnya yang ringkas, fleksibel serta ekosistem dan perpustakaan yang berkuasa, termasuk dalam bidang seperti pengkomputeran saintifik dan pembelajaran mesin. Rangkaian saraf memainkan peranan penting dalam bidang pembelajaran mesin dan boleh digunakan dalam banyak bidang seperti penglihatan komputer, pemprosesan bahasa semula jadi dan sistem pengesyoran. Artikel ini akan memperkenalkan rangkaian saraf dalam Python dan memberikan beberapa contoh.
Rangkaian saraf ialah model pembelajaran mendalam yang mempunyai ciri-ciri simulasi sistem saraf haiwan. Rangkaian saraf terdiri daripada berbilang neuron Setiap neuron adalah bersamaan dengan fungsi Inputnya adalah keluaran daripada neuron lain, yang diproses oleh fungsi pengaktifan untuk menghasilkan keluaran. Rangkaian saraf menggunakan algoritma perambatan belakang untuk melaraskan berat dan berat sebelah secara berterusan, membolehkan model lebih sesuai dengan data dan membuat ramalan atau klasifikasi.
TensorFlow ialah rangka kerja pembelajaran mendalam yang popular yang dilancarkan oleh Google untuk membina rangkaian saraf dan algoritma pembelajaran mesin yang lain. Pada asalnya dibangunkan untuk penyelidik Google dalaman, TensorFlow dengan cepat menjadi salah satu rangka kerja pembelajaran mendalam yang paling popular selepas menjadi sumber terbuka.
Dalam TensorFlow, kita boleh menggunakan langkah berikut untuk mencipta rangkaian saraf:
Kini, kami akan memperkenalkan dua contoh rangkaian saraf yang dilaksanakan menggunakan TensorFlow.
Pengecaman digit tulisan tangan ialah isu penting dalam bidang penglihatan komputer, dan rangkaian saraf telah mencapai keputusan yang baik dalam isu ini. Dalam TensorFlow, anda boleh melatih rangkaian saraf menggunakan set data MNIST, yang mengandungi 60,000 imej skala kelabu 28x28 dan label yang sepadan.
Pertama, kita perlu memasang perpustakaan TensorFlow dan NumPy. Berikut ialah kod lengkap untuk pengecaman digit tulisan tangan:
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}))
Dalam contoh ini, kami mula-mula menyediakan set data MNIST, dan kemudian mencipta model rangkaian saraf ringkas yang mengandungi 784 input dan 10 output. Seterusnya, kami mentakrifkan fungsi kehilangan dan pengoptimum serta memasukkan data latihan ke dalam model untuk latihan. Akhir sekali, kami melakukan penilaian ujian ke atas data ujian dan memperoleh ketepatan 92.3%.
Hampir semua orang menggunakan sistem mel sekarang, tetapi semua orang menghadapi masalah spam. Penapis spam ialah program yang menyemak sama ada e-mel adalah spam. Mari lihat cara menggunakan rangkaian saraf untuk membina penapis spam.
Pertama, kami perlu menyediakan set data spam, termasuk e-mel yang telah ditandakan sebagai spam dan bukan spam. Sila ambil perhatian bahawa apabila membina penapis spam, akan terdapat dua kategori mesej: bukan spam dan spam.
Berikut ialah kod lengkap penapis spam:
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()))
Dalam contoh ini, kami menggunakan kaedah train_test_split() sklearn untuk membahagikan set data, dan kemudian menggunakan alat prapemprosesan Teks perpustakaan Keras menukar set data kepada matriks (pengekodan satu panas). Seterusnya, kami menggunakan Sequential untuk mengisytiharkan neuron dan menetapkan parameternya. Akhir sekali, kami menggunakan model terlatih untuk meramal data ujian dan menilainya untuk mendapatkan ketepatan 98.02%.
Rangkaian saraf dalam Python ialah teknologi berkuasa yang boleh digunakan dalam pelbagai aplikasi seperti pengecaman imej, penapis spam, dsb. Menggunakan TensorFlow, kami boleh mencipta, melatih dan menguji model rangkaian saraf dengan mudah dan memperoleh hasil yang memuaskan. Apabila permintaan orang ramai untuk pembelajaran mesin semakin meningkat, teknologi rangkaian saraf akan menjadi alat yang lebih penting dan lebih meluas digunakan dalam senario aplikasi masa hadapan.
Atas ialah kandungan terperinci Contoh rangkaian saraf dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!