anchor.diff:          Shape.checkCanMaxunpool3d a.dtype a.shape indices.dtype indices.shape outputSize |> ignore
           let inline fRaw(a:RawTensor) = a.MaxUnpool3D(indices.primalRaw, outputSize)
           let inline fTensor(a:Tensor) = a.maxunpool3d(indices, kernelSizes=kernelSizes, strides=strides, paddings=paddings, outputSize=outputSize)
  -        let inline dfTensorFwd(cp:Tensor,ap:Tensor,ad:Tensor) = ad.maxunpool3d(indices, kernelSizes=kernelSizes, strides=strides, paddings=paddings, outputSize=outputSize)
  +        let inline dfTensorFwd(ap:Tensor,ad:Tensor,cp:Tensor) = ad.maxunpool3d(indices, kernelSizes=kernelSizes, strides=strides, paddings=paddings, outputSize=outputSize)
           let inline dfTensorRev(a) = MaxUnpool3DT(a, indices)
           Tensor.OpUnary(a, fRaw, fTensor, dfTensorFwd, dfTensorRev)
   
  
positive.code:     member a.sum(?dtype: Dtype) =
          let inline fRaw(a:RawTensor) = a.SumT(?resultType=dtype)
          let inline fTensor(a:Tensor) = a.sum(?dtype=dtype)
          let inline dfTensorFwd(cp,ap,ad:Tensor) = ad.sum(?dtype=dtype)
          let inline dfTensorRev(a) = SumT(a)
          Tensor.OpUnary(a, fRaw, fTensor, dfTensorFwd, dfTensorRev)
  
  
negative.code:     member a.sinh() =
          let inline fRaw(a:RawTensor) = a.SinhT()
          let inline fTensor(a:Tensor) = a.sinh()
          let inline dfTensorFwd(ap:Tensor,ad,cp:Tensor) = ad * ap.cosh()
          let inline dfTensorRev(a) = SinhT(a)
          Tensor.OpUnary(a, fRaw, fTensor, dfTensorFwd, dfTensorRev)
  
  