1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//! Minimal debug to trace gradient flow
use rustorch::prelude::*;
fn main() {
println!("=== Minimal Debug ===");
// Create a simple variable
let x = Variable::new(Tensor::from_vec(vec![2.0], vec![1]), true);
println!(
"x: {:?}, requires_grad: {}",
x.data().read().unwrap().as_array(),
x.requires_grad()
);
// Test sum operation
let sum_result = x.sum();
println!(
"sum_result: {:?}, requires_grad: {}",
sum_result.data().read().unwrap().as_array(),
sum_result.requires_grad()
);
// Check if gradient function exists (can't access private field directly)
// Test backward
println!("\n=== Testing Backward ===");
println!(
"Before backward - x grad: {:?}",
x.grad().read().unwrap().as_ref().map(|g| g.as_array())
);
sum_result.backward();
println!(
"After backward - x grad: {:?}",
x.grad().read().unwrap().as_ref().map(|g| g.as_array())
);
// Check sum_result gradient
println!(
"sum_result grad: {:?}",
sum_result
.grad()
.read()
.unwrap()
.as_ref()
.map(|g| g.as_array())
);
}