KazuminEngine

プログラマーの日記

zPerceptron~zen言語で書かれた簡単パーセプトロン~

こんにちは、かずみん(@warugaki_k_k)です。

最近は、「ゼロから作る DeepLearning Pythonで学ぶディープラーニングの理論と実装」な本を読んでいます。

そこで学んだ、zen言語でandゲートなパーセプトロンを書いてみました。バイアスは使ってません。

実装は10分もかからずに、すみました。本当に簡単なものです。

GitHub - kazuminn/zPerceptron

const std = @import("std");

pub fn main() anyerror!void {
    std.debug.warn("AND(0, 0) : {} \n", AND(0,0));
    std.debug.warn("AND(1, 0) : {} \n", AND(1,0));
    std.debug.warn("AND(0, 1) : {} \n", AND(0,1));
    std.debug.warn("AND(1, 1) : {} \n", AND(1,1));
}

pub fn AND(x1 : f16 , x2 :f16) u8 {
    const w1 = 0.5;
    const w2 = 0.5;
    const theta = 0.7;
    const tmp = x1*w1 + x2*w2;
    if (tmp <= theta){
        return 0;
    }else{
        return 1;
    }
} 

これを実行すると、

$zen build run
AND(0, 0) : 0 
AND(1, 0) : 0 
AND(0, 1) : 0 
AND(1, 1) : 1 

あってますね。

全然(zenzen)書くことがありません。これで終わりです。

ニューラルネットワークも実装しようと思っていましたが、zen言語の行列の積をする関数とかがないっぽいので無理っぽいです。(あるのかな?よく知らない。

zen言語でディープラーニングとかできたら、かっこいいですね。