Rumah  >  Artikel  >  Peranti teknologi  >  Bina model pembelajaran mendalam dengan TensorFlow dan Keras

Bina model pembelajaran mendalam dengan TensorFlow dan Keras

王林
王林ke hadapan
2024-01-24 09:18:05467semak imbas

Bina model pembelajaran mendalam dengan TensorFlow dan Keras

TensorFlow dan Keras kini merupakan salah satu rangka kerja pembelajaran mendalam yang paling popular. Mereka bukan sahaja menyediakan API peringkat tinggi untuk memudahkan pembinaan dan melatih model pembelajaran mendalam, tetapi juga menyediakan pelbagai lapisan dan jenis model untuk memudahkan pembinaan pelbagai jenis model pembelajaran mendalam. Oleh itu, ia digunakan secara meluas untuk melatih model pembelajaran mendalam berskala besar.

Kami akan menggunakan TensorFlow dan Keras untuk membina model pembelajaran mendalam untuk klasifikasi imej. Dalam contoh ini, kami akan menggunakan set data CIFAR-10, yang mengandungi 10 kategori berbeza dengan 6000 imej warna 32x32 bagi setiap kategori.

Pertama, kita perlu mengimport perpustakaan dan set data yang diperlukan. Kami akan menggunakan TensorFlow versi 2.0 dan API Keras untuk membina model. Berikut ialah kod untuk mengimport pustaka dan set data: ```python import aliran tensor astf daripada import tensorflow keras daripada tensorflow.keras.datasets import mnist #Import set data (x_train, y_train), (x_test, y_test) = mnist.load_data() ``` Di atas ialah kod untuk mengimport pustaka dan set data. Kami menggunakan pustaka `tensorflow` untuk membina model dan menggunakan set data `mnist` sebagai set data contoh.

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.datasets import cifar10

# 加载CIFAR-10数据集
(x_train, y_train), (x_test, y_test) = cifar10.load_data()

# 将像素值缩放到0到1之间
x_train = x_train.astype("float32") / 255.0
x_test = x_test.astype("float32") / 255.0

# 将标签从整数转换为one-hot编码
y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)

Seterusnya, kami akan mentakrifkan model rangkaian neural konvolusi. Kami akan menggunakan tiga lapisan konvolusi dan tiga lapisan gabungan untuk mengekstrak ciri, dan kemudian dua lapisan bersambung sepenuhnya untuk pengelasan. Berikut ialah definisi model kami:

model = keras.Sequential(
    [
        # 第一个卷积层
        layers.Conv2D(32, (3, 3), activation="relu", input_shape=(32, 32, 3)),
        layers.MaxPooling2D((2, 2)),
        # 第二个卷积层
        layers.Conv2D(64, (3, 3), activation="relu"),
        layers.MaxPooling2D((2, 2)),
        # 第三个卷积层
        layers.Conv2D(128, (3, 3), activation="relu"),
        layers.MaxPooling2D((2, 2)),
        # 展平层
        layers.Flatten(),
        # 全连接层
       layers.Dense(128, activation="relu"),
        layers.Dense(10, activation="softmax"),
    ]
)

Dalam model ini, kami menggunakan fungsi pengaktifan ReLU, iaitu fungsi tak linear yang biasa digunakan yang boleh membantu model mempelajari hubungan tak linear yang kompleks. Kami juga menggunakan fungsi pengaktifan softmax untuk klasifikasi berbilang kelas.

Kini kita boleh menyusun model dan memulakan latihan. Kami akan menggunakan pengoptimum Adam dan fungsi kehilangan entropi silang untuk latihan model. Inilah kodnya: model.compile(optimizer='adam', loss='categorical_crossentropy') model.fit(X_train, y_train, epochs=10, batch_size=32)

# 编译模型
model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"])

# 训练模型
history = model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test))

Selepas latihan selesai, kita boleh menggunakan set ujian untuk menilai prestasi model. Berikut ialah kod kami untuk menilai model:

# 在测试集上评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)

print("Test loss:", test_loss)
print("Test accuracy:", test_acc)

Akhir sekali, kami boleh menggunakan sejarah latihan untuk merancang kehilangan latihan dan pengesahan serta ketepatan model. Berikut ialah kod untuk melukis sejarah latihan:

import matplotlib.pyplot as plt

# 绘制训练和验证损失
plt.plot(history.history["loss"], label="Training loss")
plt.plot(history.history["val_loss"], label="Validation loss")
plt.xlabel("Epoch")
plt.ylabel("Loss")
plt.legend()

plt.show()

# 绘制训练和验证准确率
plt.plot(history.history["accuracy"], label="Training accuracy")
plt.plot(history.history["val_accuracy"], label="Validation accuracy")
plt.xlabel("Epoch")
plt.ylabel("Accuracy")
plt.legend()

plt.show()

Di atas ialah keseluruhan kod untuk contoh model pembelajaran mendalam berdasarkan TensorFlow dan Keras. Kami membina model rangkaian saraf konvolusi menggunakan set data CIFAR-10 untuk tugas pengelasan imej.

Atas ialah kandungan terperinci Bina model pembelajaran mendalam dengan TensorFlow dan Keras. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:163.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam