oarust 0.8.6

GPU-first semantic computing engine written in Rust
use crate::ml::Parameter;
use crate::{Matrix, Result};

use super::super::{node::GradNode, tape::record_node};

pub(in crate::ml) fn record_linear(
	input: &Matrix,
	output: &Matrix,
	weight: Parameter,
	weight_value: Matrix,
	weight_version: u64,
	bias: Option<(Parameter, u64)>,
) -> Result<()> {
	let (bias, bias_version) = bias
		.map(|(bias, version)| (Some(bias), Some(version)))
		.unwrap_or((None, None));
	record_node(GradNode::Linear {
		input: input.clone(),
		output_id: output.value_id(),
		weight,
		weight_value,
		weight_version,
		bias,
		bias_version,
	})
}