def scalar

bendtorch-core@0.1.0.0 · src/tensor/elementwise.bend:85

import bendtorch-core@0.1.0.0/src/tensor/elementwise.bend as Elementwise
import Base

85def scalar(operation: Operation, left: F32, right: F32) -> F32:
86  match operation:
87    case Add{}:
88      F32.add(left, right)
89    case Sub{}:
90      F32.sub(left, right)
91    case Mul{}:
92      F32.mul(left, right)
93    case KeepLeft{}:
94      left
95    case NegateLeft{}:
96      F32.neg(left)
97    case ReluLeft{}:
98      relu(left)
99    case ReluBackward{}:
100      relu_backward(left, right)
101    case Divide{}:
102      F32.div(left, right)
103    case ExpLeft{}:
104      F32.exp(left)
105    case LogLeft{}:
106      F32.log(left)
107    case Matches{}:
108      zero_if(Bool.not(U32.is_eq(bits(left), bits(right))), 1.0)
109    case PickNegated{}:
110      zero_if(Bool.not(is_one(right)), F32.neg(left))
111    case MseGrad{+scale}:
112      F32.mul(F32.mul(scale, right), left)
113    case OneHotGrad{+count}:
114      zero_if(Bool.not(is_one(right)), target_gradient(left, count))
115    case SoftmaxGrad{+count, +single}:
116      F32.neg(F32.mul(F32.exp(right), row_sum(single, target_gradient(left, count))))
117    case Descend{lr}:
118      F32.sub(left, F32.mul(lr, right))

Uses (18)

Used by (52)