PyTorch ialah rangka kerja pembelajaran mendalam berasaskan Python untuk membina pelbagai rangkaian saraf. Artikel ini akan menunjukkan cara menggunakan PyTorch untuk membina rangkaian saraf mudah dan memberikan contoh kod.
Mula-mula, kita perlu memasang PyTorch. Ia boleh dipasang dari baris arahan dengan:
pip install torch
Seterusnya, kami akan menggunakan PyTorch untuk membina rangkaian neural yang mudah disambungkan sepenuhnya untuk tugas klasifikasi binari. Rangkaian saraf ini akan mempunyai dua lapisan tersembunyi dengan 10 neuron setiap satu. Kami akan menggunakan fungsi pengaktifan sigmoid dan fungsi kehilangan entropi silang.
Berikut ialah kod lengkap:
import torch import torch.nn as nn import torch.optim as optim # 定义神经网络模型 class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(2, 10) # 第一个隐藏层 self.fc2 = nn.Linear(10, 10) # 第二个隐藏层 self.fc3 = nn.Linear(10, 1) # 输出层 def forward(self, x): x = torch.sigmoid(self.fc1(x)) x = torch.sigmoid(self.fc2(x)) x = torch.sigmoid(self.fc3(x)) return x # 创建数据集 X = torch.tensor([[0, 0], [0, 1], [1, 0], [1, 1]], dtype=torch.float32) y = torch.tensor([[0], [1], [1], [0]], dtype=torch.float32) # 创建神经网络实例 net = Net() # 定义损失函数和优化器 criterion = nn.BCELoss() optimizer = optim.SGD(net.parameters(), lr=0.1) # 训练神经网络 for epoch in range(10000): optimizer.zero_grad() output = net(X) loss = criterion(output, y) loss.backward() optimizer.step() # 打印训练损失 if epoch % 1000 == 0: print('Epoch {}: loss = {}'.format(epoch, loss.item())) # 使用训练好的神经网络进行预测 with torch.no_grad(): output = net(X) predicted = (output > 0.5).float() print('Predicted: {}\n'.format(predicted))
Mula-mula, kami mentakrifkan kelas yang dipanggil Net, yang mewarisi daripada nn.Module. Kelas ini mengandungi semua lapisan rangkaian saraf. Dalam contoh ini, kami mentakrifkan tiga lapisan bersambung sepenuhnya, dua lapisan pertama adalah lapisan tersembunyi dan yang terakhir ialah lapisan keluaran.
Dalam kelas Net, selain mentakrifkan kaedah ke hadapan untuk menerangkan proses perambatan ke hadapan rangkaian saraf, kami juga menggunakan fungsi pengaktifan sigmoid untuk menghantar output setiap lapisan tersembunyi ke lapisan seterusnya.
Seterusnya, kami mencipta set data yang mengandungi empat sampel, di mana setiap sampel mempunyai dua ciri. Kami juga menentukan contoh rangkaian saraf bernama net dan memilih BCELoss sebagai fungsi kehilangan dan SGD sebagai pengoptimum.
Kemudian, kami mula melatih rangkaian saraf. Dalam setiap lelaran, kita mula-mula memusnahkan kecerunan pengoptimum dan kemudian menghantar set data X ke dalam rangkaian saraf untuk mendapatkan output. Kami mengira kerugian dan melakukan perambatan balik, dan akhirnya mengemas kini parameter rangkaian menggunakan pengoptimum. Kami juga mencetak kehilangan latihan untuk setiap 1000 lelaran.
Selepas latihan selesai, kami menggunakan pengurus konteks no_grad untuk membuat ramalan pada set data. Kami akan mengeluarkan empat ramalan dan mencetaknya.
Ini ialah contoh mudah yang menunjukkan cara membina rangkaian saraf asas menggunakan PyTorch. PyTorch menyediakan banyak alat dan fungsi untuk membantu kami membina dan melatih rangkaian saraf dengan lebih mudah.
Atas ialah kandungan terperinci Bagaimana untuk mencipta rangkaian saraf mudah menggunakan PyTorch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!