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::{
	GradNodeAdaptiveAvgPool2d, GradNodeAvgPool2d, GradNodeMaxPool2d,
};

pub(in crate::ml) fn record_avg_pool_2d(
	input: &Matrix,
	kernel_size: usize,
	stride: usize,
	padding: usize,
	result: &Matrix,
) -> Result<()> {
	record_node(GradNode::Operation(GradNodeOperation::AvgPool2d(
		GradNodeAvgPool2d {
			input: input.clone(),
			kernel_size,
			stride,
			padding,
			output_id: result.value_id(),
		},
	)))
}

pub(in crate::ml) fn record_max_pool_2d(
	input: &Matrix,
	indices: Matrix,
	kernel_size: usize,
	stride: usize,
	padding: usize,
	result: &Matrix,
) -> Result<()> {
	record_node(GradNode::Operation(GradNodeOperation::MaxPool2d(
		GradNodeMaxPool2d {
			input: input.clone(),
			indices,
			kernel_size,
			stride,
			padding,
			output_id: result.value_id(),
		},
	)))
}

pub(in crate::ml) fn record_adaptive_avg_pool_2d(
	input: &Matrix,
	output_height: usize,
	output_width: usize,
	result: &Matrix,
) -> Result<()> {
	record_node(GradNode::Operation(GradNodeOperation::AdaptiveAvgPool2d(
		GradNodeAdaptiveAvgPool2d {
			input: input.clone(),
			output_height,
			output_width,
			output_id: result.value_id(),
		},
	)))
}