oarust 0.8.6

GPU-first semantic computing engine written in Rust
// @generated by tool/gen/fn/generate.py; DO NOT EDIT.
// schema=ml_training.json schema_version=1 generator_version=64
// schema_sha256=6678961ee57f24310158676c7b4fe0821e21ca48db7edcb20d2a749a164976ae
// Mechanical tape attachments; concrete saved-state node behavior remains private.

use crate::{Matrix, Result};

use crate::ml::autograd::{
	node::{GradNode, operation::GradNodeOperation},
	tape::record_node,
};

use crate::ml::autograd::node::operation::{
	GradNodeElu, GradNodeGelu, GradNodeLeakyRelu, GradNodeMish, GradNodeRelu, GradNodeSigmoid,
	GradNodeSilu, GradNodeSoftplus, GradNodeTanh,
};

pub(in crate::ml) fn record_gelu(input: &Matrix, result: &Matrix) -> Result<()> {
	record_node(GradNode::Operation(GradNodeOperation::Gelu(GradNodeGelu {
		input: input.clone(),
		output_id: result.value_id(),
	})))
}

pub(in crate::ml) fn record_silu(input: &Matrix, result: &Matrix) -> Result<()> {
	record_node(GradNode::Operation(GradNodeOperation::Silu(GradNodeSilu {
		input: input.clone(),
		output_id: result.value_id(),
	})))
}

pub(in crate::ml) fn record_relu(input: &Matrix, output: &Matrix, result: &Matrix) -> Result<()> {
	record_node(GradNode::Operation(GradNodeOperation::Relu(GradNodeRelu {
		input: input.clone(),
		output: output.clone(),
		output_id: result.value_id(),
	})))
}

pub(in crate::ml) fn record_tanh(input: &Matrix, output: &Matrix, result: &Matrix) -> Result<()> {
	record_node(GradNode::Operation(GradNodeOperation::Tanh(GradNodeTanh {
		input: input.clone(),
		output: output.clone(),
		output_id: result.value_id(),
	})))
}

pub(in crate::ml) fn record_sigmoid(
	input: &Matrix,
	output: &Matrix,
	result: &Matrix,
) -> Result<()> {
	record_node(GradNode::Operation(GradNodeOperation::Sigmoid(
		GradNodeSigmoid {
			input: input.clone(),
			output: output.clone(),
			output_id: result.value_id(),
		},
	)))
}

pub(in crate::ml) fn record_leaky_relu(input: &Matrix, alpha: f32, result: &Matrix) -> Result<()> {
	record_node(GradNode::Operation(GradNodeOperation::LeakyRelu(
		GradNodeLeakyRelu {
			input: input.clone(),
			alpha,
			output_id: result.value_id(),
		},
	)))
}

pub(in crate::ml) fn record_elu(
	input: &Matrix,
	output: &Matrix,
	alpha: f32,
	result: &Matrix,
) -> Result<()> {
	record_node(GradNode::Operation(GradNodeOperation::Elu(GradNodeElu {
		input: input.clone(),
		output: output.clone(),
		alpha,
		output_id: result.value_id(),
	})))
}

pub(in crate::ml) fn record_mish(input: &Matrix, result: &Matrix) -> Result<()> {
	record_node(GradNode::Operation(GradNodeOperation::Mish(GradNodeMish {
		input: input.clone(),
		output_id: result.value_id(),
	})))
}

pub(in crate::ml) fn record_softplus(
	input: &Matrix,
	output: &Matrix,
	result: &Matrix,
) -> Result<()> {
	record_node(GradNode::Operation(GradNodeOperation::Softplus(
		GradNodeSoftplus {
			input: input.clone(),
			output: output.clone(),
			output_id: result.value_id(),
		},
	)))
}