NeuroWhAI의 잡블로그

[Rust] 퍼셉트론 본문

개발 및 공부/알고리즘

[Rust] 퍼셉트론

NeuroWhAI 2018. 7. 13. 20:26


Rust에 익숙해질겸 '밑바닥 부터 시작하는 딥러닝' 책을 Rust로도 실습해서 올릴 생각입니다.
다만 본인도 Rust를 잘하는게 아니므로 Rust 공부용으로 보시진 말아주세요.

일단 되나 안되나 테스트 용도로 2장의 퍼셉트론 AND 게이트를 구현해본 코드입니다.
라이브러리는 'rulinalg'를 사용했습니다.

코드:
#[macro_use]
extern crate rulinalg;

use rulinalg::matrix::{BaseMatrix, Matrix};

fn and_gate(x1: f32, x2: f32) -> f32 {
	let x = matrix![x1, x2];
	let w = matrix![0.5, 0.5f32];
	let b = -0.7;
	
	let out = x.elemul(&w).sum() + b;
	
	if out > 0f32 {
		1.0
	}
	else {
		0.0
	}
}

fn main() {
	let input: Matrix<f32> = matrix![0.0, 0.0;
					0.0, 1.0;
					1.0, 0.0;
					1.0, 1.0];
	
	for x in input.row_iter() {
		let mut row = x.iter();
		let x1 = row.next().unwrap();
		let x2 = row.next().unwrap();
		
		println!("({}, {}) -> {}", x1, x2, and_gate(*x1, *x2));
	}
}

결과:
(0, 0) -> 0
(0, 1) -> 0
(1, 0) -> 0
(1, 1) -> 1






Comments