一个安全,可移植且高兴能的计算内核。为了autograph
开发的。
文章链接,https://www.reddit.com/r/rust/comments/1bra5ep/krnl_v010_safe_portable_high_performance_compute/
Github 链接,https://github.com/charles-r-earp/krnl
用 krnl 实现的 GPGPU 内核。实现一个神经网络的示例:
#[derive(Layer, Forward)]
#[autograph(forward(Variable4, Output=Variable2))]
struct LeNet5 {
conv1: Conv2,
relu1: Relu,
pool1: MaxPool2,
conv2: Conv2,
relu2: Relu,
pool2: MaxPool2,
flatten: Flatten,
dense1: Dense,
relu3: Relu,
dense2: Dense,
relu4: Relu,
dense3: Dense,
}
impl LeNet5 {
fn new(device: Device, scalar_type: ScalarType) -> Result<Self> {
let conv1 = Conv2::builder()
.device(device.clone())
.scalar_type(scalar_type)
.inputs(1)
.outputs(6)
.filter([5, 5])
.build()?;
let relu1 = Relu;
let pool1 = MaxPool2::builder().filter([2, 2]).build();
let conv2 = Conv2::builder()
.device(device.clone())
.scalar_type(scalar_type)
.inputs(6)
.outputs(16)
.filter([5, 5])
.build()?;
let relu2 = Relu;
let pool2 = MaxPool2::builder().filter([2, 2]).build();
let flatten = Flatten;
let dense1 = Dense::builder()
.device(device.clone())
.scalar_type(scalar_type)
.inputs(16 * 4 * 4)
.outputs(128)
.build()?;
let relu3 = Relu;
let dense2 = Dense::builder()
.device(device.clone())
.scalar_type(scalar_type)
.inputs(128)
.outputs(84)
.build()?;
let relu4 = Relu;
let dense3 = Dense::builder()
.device(device.clone())
.scalar_type(scalar_type)
.inputs(84)
.outputs(10)
.bias(true)
.build()?;
Ok(Self {
conv1,
relu1,
pool1,
conv2,
relu2,
pool2,
flatten,
dense1,
relu3,
dense2,
relu4,
dense3,
})
}
}
let mut model = LeNet5::new(device.clone(), ScalarType::F32)?;
model.init_parameter_grads()?;
let y = model.forward(x)?;
let loss = y.cross_entropy_loss(t)?;
loss.backward()?;
model.update(learning_rate, &optimizer)?;
文章链接,https://www.reddit.com/r/rust/comments/1bra88r/autograph_v020_a_machine_learning_library_for_rust/
Github 链接,https://github.com/charles-r-earp/autograph
我们很高兴地宣布str0m 的0.5.0版本。这个版本是 str0m 日益成熟的证明,包含内部代码改进、 bug 修复和性能改进。
非常感谢来自社区的所有贡献者
文章链接,https://www.reddit.com/r/rust/comments/1bquf2v/str0m_version_050_has_been_released/
Github 链接,https://crates.io/crates/str0m