module Torch.Indef.Dynamic.NN.Criterion where
import Foreign hiding (with, new)
import Foreign.C.Types
import Foreign.Ptr
import Control.Monad.Managed
import Torch.Sig.Types.NN
import Torch.Indef.Dynamic.Tensor
import qualified Torch.Sig.NN as Sig
import qualified Torch.Indef.Index as Ix
import Torch.Indef.Types
_ClassNLLCriterion_updateOutput
:: Dynamic
-> IndexDynamic
-> Dynamic
-> Bool
-> Maybe Dynamic
-> Dynamic
-> Integer
-> Bool
-> IO ()
_ClassNLLCriterion_updateOutput t0 it0 t1 b0 mt2 t3 i b1 = runManaged $ do
s' <- managedState
t0' <- managedTensor t0
t1' <- managedTensor t1
t3' <- managedTensor t3
liftIO $ do
t2' <- case mt2 of
Just t2 -> withForeignPtr (ctensor t2) pure
Nothing -> pure nullPtr
Ix.withDynamicState it0 $ \ _ it0' ->
Sig.c_ClassNLLCriterion_updateOutput s' t0' it0' t1'
(toEnum $ fromEnum b0)
t2'
t3'
(fromIntegral i)
(toEnum $ fromEnum b1)
_ClassNLLCriterion_updateGradInput
:: Dynamic
-> IndexDynamic
-> Dynamic
-> Dynamic
-> Bool
-> Maybe Dynamic
-> Dynamic
-> Integer
-> Bool
-> IO ()
_ClassNLLCriterion_updateGradInput t0 it0 t1 t2 b0 mt3 t4 i b1 = runManaged $ do
s' <- managedState
t0' <- managedTensor t0
t1' <- managedTensor t1
t2' <- managedTensor t2
t4' <- managedTensor t4
liftIO $ do
t3' <- case mt3 of
Just t3 -> withForeignPtr (ctensor t3) pure
Nothing -> pure nullPtr
Ix.withDynamicState it0 $ \_ it0' ->
Sig.c_ClassNLLCriterion_updateGradInput s' t0' it0' t1' t2' (toEnum $ fromEnum b0) t3' t4' (fromIntegral i) (toEnum $ fromEnum b1)
_l1Cost_updateOutput :: Dynamic -> Dynamic -> IO ()
_l1Cost_updateOutput t0 t1 = with2DynamicState t0 t1 $ \s' t0' t1' ->
Sig.c_L1Cost_updateOutput s' t0' t1'
_l1Cost_updateGradInput :: Dynamic -> Dynamic -> Dynamic -> IO ()
_l1Cost_updateGradInput t0 t1 t2 = with3DynamicState t0 t1 t2 $ \s' t0' t1' t2' ->
Sig.c_L1Cost_updateGradInput s' t0' t1' t2'
_smoothL1Criterion_updateOutput :: Dynamic -> Dynamic -> Dynamic -> Bool -> Bool -> IO ()
_smoothL1Criterion_updateOutput t0 t1 t2 b0 b1 = with3DynamicState t0 t1 t2 $ \s' t0' t1' t2' ->
Sig.c_SmoothL1Criterion_updateOutput s' t0' t1' t2' (toEnum $ fromEnum b0) (toEnum $ fromEnum b1)
_smoothL1Criterion_updateGradInput :: Dynamic -> Dynamic -> Dynamic -> Dynamic -> Bool -> Bool -> IO ()
_smoothL1Criterion_updateGradInput t0 t1 t2 t3 b0 b1 =
with2DynamicState t0 t1 $ \s' t0' t1' ->
with2DynamicState t2 t3 $ \_ t2' t3' ->
Sig.c_SmoothL1Criterion_updateGradInput s' t0' t1' t2' t3' (toEnum $ fromEnum b0) (toEnum $ fromEnum b1)
_absCriterion_updateOutput :: Dynamic -> Dynamic -> Dynamic -> Bool -> Bool -> IO ()
_absCriterion_updateOutput t0 t1 t2 b0 b1 = with3DynamicState t0 t1 t2 $ \s' t0' t1' t2' ->
Sig.c_AbsCriterion_updateOutput s' t0' t1' t2' (toEnum $ fromEnum b0) (toEnum $ fromEnum b1)
_absCriterion_updateGradInput :: Dynamic -> Dynamic -> Dynamic -> Dynamic -> Bool -> Bool -> IO ()
_absCriterion_updateGradInput t0 t1 t2 t3 b0 b1 =
with2DynamicState t0 t1 $ \s' t0' t1' ->
with2DynamicState t2 t3 $ \_ t2' t3' ->
Sig.c_AbsCriterion_updateGradInput s' t0' t1' t2' t3' (toEnum $ fromEnum b0) (toEnum $ fromEnum b1)
_bCECriterion_updateOutput :: Dynamic -> Dynamic -> Dynamic -> Bool -> Maybe Dynamic -> Bool -> IO ()
_bCECriterion_updateOutput t0 t1 t2 b0 mt3 b1 = runManaged $ do
s' <- managedState
t0' <- managedTensor t0
t1' <- managedTensor t1
t2' <- managedTensor t2
liftIO $ do
t3' <- case mt3 of
Nothing -> pure nullPtr
Just t3 -> withForeignPtr (ctensor t3) pure
Sig.c_BCECriterion_updateOutput s' t0' t1' t2' (toEnum $ fromEnum b0) t3' (toEnum $ fromEnum b1)
_bCECriterion_updateGradInput :: Dynamic -> Dynamic -> Dynamic -> Dynamic -> Bool -> Maybe Dynamic -> Bool -> IO ()
_bCECriterion_updateGradInput t0 t1 t2 t3 b0 mt4 b1 = runManaged $ do
s' <- managedState
t0' <- managedTensor t0
t1' <- managedTensor t1
t2' <- managedTensor t2
t3' <- managedTensor t3
liftIO $ do
t4' <- case mt4 of
Nothing -> pure nullPtr
Just t4 -> withForeignPtr (ctensor t4) pure
Sig.c_BCECriterion_updateGradInput s' t0' t1' t2' t3' (toEnum $ fromEnum b0) t4' (toEnum $ fromEnum b1)
_distKLDivCriterion_updateOutput :: Dynamic -> Dynamic -> Dynamic -> Bool -> Bool -> IO ()
_distKLDivCriterion_updateOutput t0 t1 t2 b0 b1 = with3DynamicState t0 t1 t2 $ \s' t0' t1' t2' ->
Sig.c_DistKLDivCriterion_updateOutput s' t0' t1' t2' (toEnum $ fromEnum b0) (toEnum $ fromEnum b1)
_distKLDivCriterion_updateGradInput :: Dynamic -> Dynamic -> Dynamic -> Dynamic -> Bool -> Bool -> IO ()
_distKLDivCriterion_updateGradInput t0 t1 t2 t3 b0 b1 =
with2DynamicState t0 t1 $ \s' t0' t1' ->
with2DynamicState t2 t3 $ \_ t2' t3' ->
Sig.c_DistKLDivCriterion_updateGradInput s' t0' t1' t2' t3' (toEnum $ fromEnum b0) (toEnum $ fromEnum b1)
_marginCriterion_updateOutput :: Dynamic -> Dynamic -> Dynamic -> Bool -> Double -> IO ()
_marginCriterion_updateOutput t0 t1 t2 b0 d0 = with3DynamicState t0 t1 t2 $ \s' t0' t1' t2' ->
Sig.c_MarginCriterion_updateOutput s' t0' t1' t2' (toEnum $ fromEnum b0) (realToFrac d0)
_marginCriterion_updateGradInput :: Dynamic -> Dynamic -> Dynamic -> Bool -> Double -> IO ()
_marginCriterion_updateGradInput t0 t1 t2 b0 d0 = with3DynamicState t0 t1 t2 $ \s' t0' t1' t2' ->
Sig.c_MarginCriterion_updateGradInput s' t0' t1' t2' (toEnum $ fromEnum b0) (realToFrac d0)
_softMarginCriterion_updateOutput :: Dynamic -> Dynamic -> Dynamic -> Bool -> Bool -> IO ()
_softMarginCriterion_updateOutput t0 t1 t2 b0 b1 = with3DynamicState t0 t1 t2 $ \s' t0' t1' t2' ->
Sig.c_SoftMarginCriterion_updateOutput s' t0' t1' t2' (toEnum $ fromEnum b0) (toEnum $ fromEnum b1)
_softMarginCriterion_updateGradInput :: Dynamic -> Dynamic -> Dynamic -> Dynamic -> Bool -> Bool -> IO ()
_softMarginCriterion_updateGradInput t0 t1 t2 t3 b0 b1 =
with2DynamicState t0 t1 $ \s' t0' t1' ->
with2DynamicState t2 t3 $ \_ t2' t3' ->
Sig.c_SoftMarginCriterion_updateGradInput s' t0' t1' t2' t3' (toEnum $ fromEnum b0) (toEnum $ fromEnum b1)
_mSECriterion_updateOutput :: Dynamic -> Dynamic -> Dynamic -> Bool -> Bool -> IO ()
_mSECriterion_updateOutput t0 t1 t2 b0 b1 = with3DynamicState t0 t1 t2 $ \s' t0' t1' t2' ->
Sig.c_MSECriterion_updateOutput s' t0' t1' t2' (toEnum $ fromEnum b0) (toEnum $ fromEnum b1)
_mSECriterion_updateGradInput :: Dynamic -> Dynamic -> Dynamic -> Dynamic -> Bool -> Bool -> IO ()
_mSECriterion_updateGradInput t0 t1 t2 t3 b0 b1 =
with2DynamicState t0 t1 $ \s' t0' t1' ->
with2DynamicState t2 t3 $ \_ t2' t3' ->
Sig.c_MSECriterion_updateGradInput s' t0' t1' t2' t3' (toEnum $ fromEnum b0) (toEnum $ fromEnum b1)