#machine #machine-learning #learning #virtual-machine #genetic

mlem

一个64位的哈弗机器学习机器,是一个用于进化算法编程的64位虚拟哈弗架构机器。该机器具有八个GPR(从 R0R7),一个带有SP和BP的硬件栈,以及带有输入和输出的硬件I/O。

1个不稳定版本

使用旧的Rust 2015

0.1.0 2017年4月27日

#84 in #genetic


mlem-asm中使用

MIT许可证

31KB
503

MLeM

机器学习机器是一个用于进化算法编程的64位虚拟哈弗架构机器。

该机器具有八个GPR(从 R0R7),一个带有SP和BP的硬件栈,以及带有输入和输出的硬件I/O。

这些I/O指令使用byteorder以大端方式写入整个u64

示例

此示例展示了MLeM管理执行例程执行的简单程序。

use mlem::{execute, Instruction, Address, Register, Outcome};
let input = vec![2, 2, 2, 2];
let expected = vec![4, 0];
let program = vec![
    // Get all input values
    Instruction::Input(Address::RegAbs(Register::R0)),
    Instruction::Input(Address::RegAbs(Register::R1)),
    Instruction::Input(Address::RegAbs(Register::R2)),
    Instruction::Input(Address::RegAbs(Register::R3)),
    // Perform arithmetic
    Instruction::Add(Address::RegAbs(Register::R0), Address::RegAbs(Register::R1)),
    Instruction::Sub(Address::RegAbs(Register::R2), Address::RegAbs(Register::R3)),
    // Output computed values
    Instruction::Output(Address::RegAbs(Register::R0)),
    Instruction::Output(Address::RegAbs(Register::R2)),
    // Halt
    Instruction::Halt
];
//!
let (outcome, _, output) = execute(program, input);
assert!(outcome == Outcome::Halt, "Program did not successfully halt! {:?}", outcome);
assert!(output == expected, "Program did not produce {:?} as expected, but rather {:?}.", expected, output);

依赖项

~2.5MB
~61K SLoC