Rumah  >  Artikel  >  Peranti teknologi  >  Langkah-langkah untuk menulis rangkaian neural mudah menggunakan Rust

Langkah-langkah untuk menulis rangkaian neural mudah menggunakan Rust

WBOY
WBOYke hadapan
2024-01-23 10:45:06746semak imbas

Langkah-langkah untuk menulis rangkaian neural mudah menggunakan Rust

Rust ialah bahasa pengaturcaraan peringkat sistem yang memfokuskan pada keselamatan, prestasi dan keselarasan. Ia bertujuan untuk menyediakan bahasa pengaturcaraan yang selamat dan boleh dipercayai yang sesuai untuk senario seperti sistem pengendalian, aplikasi rangkaian dan sistem terbenam.

Keselamatan Rust terutamanya datang dari dua aspek: sistem pemilikan dan penyemak pinjaman. Sistem pemilikan membolehkan pengkompil menyemak kod untuk ralat memori pada masa penyusunan, dengan itu mengelakkan isu keselamatan memori biasa. Dengan memaksa menyemak pemindahan pemilikan berubah pada masa penyusunan, Rust memastikan sumber memori diurus dan dikeluarkan dengan betul. Penyemak pinjaman menganalisis kitaran hayat pembolehubah untuk memastikan pembolehubah yang sama tidak akan diakses oleh berbilang rangkaian pada masa yang sama, sekali gus mengelakkan isu keselamatan bersamaan yang biasa. Melalui gabungan kedua-dua mekanisme ini, Rust boleh menyediakan persekitaran pengaturcaraan yang sangat selamat dan membantu pembangun menulis perisian yang lebih dipercayai.

Prestasi Rust terutamanya datang dari dua aspek: pengabstrakan kos sifar dan tiada kutipan sampah. Abstraksi kos sifar bermakna Rust menyediakan ciri abstrak bahasa peringkat tinggi, seperti padanan generik dan corak, tanpa menjejaskan kecekapan pelaksanaan kod secara negatif. Tiada kutipan sampah bermakna Rust boleh menguruskan memori dengan berkesan dan mengelakkan kehilangan prestasi yang disebabkan oleh kutipan sampah. Ciri-ciri ini menjadikan Rust sebagai bahasa pengaturcaraan berprestasi tinggi dan selamat.

Sekarang mari lihat cara membina rangkaian saraf mudah dalam Rust.

Pertama, kita perlu memilih rangka kerja rangkaian saraf. Dalam Rust, terdapat banyak rangka kerja rangkaian saraf yang sangat baik untuk dipilih, seperti TensorFlow, PyTorch, Caffe, dll. Tetapi di sini, kami memutuskan untuk menggunakan rustlearn. rustlearn ialah perpustakaan pembelajaran mesin ringan yang memfokuskan pada algebra linear dan pengiraan statistik.

Seterusnya, kita perlu menentukan struktur rangkaian saraf. Dalam rustlearn, kita boleh menggunakan struktur yang dipanggil NeuralNet untuk menentukan rangkaian saraf. Kodnya adalah seperti berikut:

let mut net = NeuralNet::new(&[2, 3, 1]);

Contoh ini mentakrifkan rangkaian saraf tiga lapisan dengan 2 neuron dalam lapisan input, 3 neuron dalam lapisan tersembunyi dan 1 neuron dalam lapisan output.

Kemudian, kita perlu menentukan data latihan untuk rangkaian saraf. Dalam contoh ini, kami menggunakan set data get logik mudah. Kodnya adalah seperti berikut:

let x = Array::from_vec(vec![vec![0., 0.], vec![0., 1.], vec![1., 0.], vec![1., 1.]]);
let y = Array::from_vec(vec![vec![0.], vec![1.], vec![1.], vec![0.]]);

Contoh ini mentakrifkan set data latihan yang mengandungi 4 sampel, setiap sampel mengandungi 2 ciri dan 1 label.

Akhir sekali, kita boleh menggunakan kaedah kereta api dalam rustlearn untuk melatih rangkaian saraf. Kodnya adalah seperti berikut:

net.train(&x, &y, SGD::default(), Loss::MSE, 1000);

Contoh ini menggunakan algoritma penurunan kecerunan stokastik (SGD) dan fungsi kehilangan ralat purata kuasa dua (MSE) untuk melatih rangkaian saraf sebanyak 1000 kali.

Kod lengkap adalah seperti berikut:

use rustlearn::prelude::*;
use rustlearn::neural_network::{NeuralNet, SGD, Loss};

fn main() {
    let mut net = NeuralNet::new(&[2, 3, 1]);
    let x = Array::from_vec(vec![vec![0., 0.], vec![0., 1.], vec![1., 0.], vec![1., 1.]]);
    let y = Array::from_vec(vec![vec![0.], vec![1.], vec![1.], vec![0.]]);
    net.train(&x, &y, SGD::default(), Loss::MSE, 1000);
}

Atas ialah kandungan terperinci Langkah-langkah untuk menulis rangkaian neural mudah menggunakan Rust. 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