NeuroWhAI의 잡블로그
[Rust] 활성화 함수 - '밑바닥부터 시작하는 딥러닝' 3장 본문
use rulinalg::matrix::{Matrix, BaseMatrixMut};
pub fn step_function(x: Matrix<f32>) -> Matrix<f32> {
x.apply(&|value| if value > 0.0 { 1.0 } else { 0.0 })
}
pub fn sigmoid(x: Matrix<f32>) -> Matrix<f32> {
x.apply(&|value| 1.0 / (1.0 + (-value).exp()))
}
pub fn relu(x: Matrix<f32>) -> Matrix<f32> {
x.apply(&|value| if value > 0.0 { value } else { 0.0 })
}
mod activation;
use rulinalg::matrix::{Matrix, BaseMatrix};
use common::plot;
fn test_function(f: fn(Matrix<f32>) -> Matrix<f32>) {
let data: Vec<_> = (-50..50).map(|n| n as f32 / 10.0).collect();
let out = f(Matrix::new(1, data.len(), data));
let graph_data: Vec<_> = out.iter().map(|v| *v).collect();
plot::print_graph(&graph_data[..], 50, 20);
}
pub fn tests() {
println!("Step function");
test_function(activation::step_function);
println!("Sigmoid");
test_function(activation::sigmoid);
println!("ReLU");
test_function(activation::relu);
}
Step function ------------------------- ------------------------- Sigmoid ---------- ---- -- -- -- - - - - - - -- - - - -- -- ---- ----------- ReLU -- - - -- - - -- - - - -- - - -- - - - -- - -------------------------
'개발 및 공부 > 알고리즘' 카테고리의 다른 글
[Rust] 경사 하강법 - '밑바닥부터 시작하는 딥러닝' 4장 (0) | 2018.07.15 |
---|---|
[Rust] 손실 함수 - '밑바닥부터 시작하는 딥러닝' 4장 (0) | 2018.07.15 |
[Rust] 퍼셉트론 - '밑바닥부터 시작하는 딥러닝' 2장 (0) | 2018.07.14 |
[Rust] 퍼셉트론 (0) | 2018.07.13 |
[Keras] Attention 매커니즘 간단한 예제 (0) | 2018.06.02 |
Comments