tensorflow-0.2.0.0: TensorFlow bindings.

Safe HaskellNone
LanguageHaskell2010

TensorFlow.Types

Contents

Synopsis

Documentation

class TensorType a where Source #

The class of scalar types supported by tensorflow.

Minimal complete definition

tensorType, tensorRefType, tensorVal

Instances

TensorType Bool Source # 
TensorType Double Source # 
TensorType Float Source # 
TensorType Int8 Source # 
TensorType Int16 Source # 
TensorType Int32 Source # 
TensorType Int64 Source # 
TensorType Word8 Source # 
TensorType Word16 Source # 
TensorType Word32 Source # 
TensorType Word64 Source # 
TensorType ByteString Source # 
TensorType Variant Source # 
TensorType ResourceHandle Source # 
TensorType (Complex Double) Source # 
TensorType (Complex Float) Source # 

newtype TensorData a Source #

Tensor data with the correct memory layout for tensorflow.

Constructors

TensorData 

Instances

(TensorType a, (~) * a a') => Fetchable (Tensor v a) (TensorData a') Source # 

Methods

getFetch :: Tensor v a -> Build (Fetch (TensorData a')) Source #

class TensorType a => TensorDataType s a where Source #

Types that can be converted to and from TensorData.

Vector is the most efficient to encode/decode for most element types.

Minimal complete definition

decodeTensorData, encodeTensorData

Methods

decodeTensorData :: TensorData a -> s a Source #

Decode the bytes of a TensorData into an s.

encodeTensorData :: Shape -> s a -> TensorData a Source #

Encode an s into a TensorData.

The values should be in row major order, e.g.,

element 0: index (0, ..., 0) element 1: index (0, ..., 1) ...

Instances

TensorDataType Vector Bool Source # 
TensorDataType Vector Double Source # 
TensorDataType Vector Float Source # 
TensorDataType Vector Int8 Source # 
TensorDataType Vector Int16 Source # 
TensorDataType Vector Int32 Source # 
TensorDataType Vector Int64 Source # 
TensorDataType Vector Word8 Source # 
TensorDataType Vector Word16 Source # 
(Storable a, TensorDataType Vector a, TensorType a) => TensorDataType Vector a Source # 

Methods

decodeTensorData :: TensorData a -> Vector a Source #

encodeTensorData :: Shape -> Vector a -> TensorData a Source #

TensorDataType Vector ByteString Source # 
(TensorDataType Vector a, TensorType a) => TensorDataType Scalar a Source # 
TensorDataType Vector (Complex Double) Source # 
TensorDataType Vector (Complex Float) Source # 

newtype Scalar a Source #

Constructors

Scalar 

Fields

Instances

(TensorDataType Vector a, TensorType a) => TensorDataType Scalar a Source # 
Eq a => Eq (Scalar a) Source # 

Methods

(==) :: Scalar a -> Scalar a -> Bool #

(/=) :: Scalar a -> Scalar a -> Bool #

Floating a => Floating (Scalar a) Source # 

Methods

pi :: Scalar a #

exp :: Scalar a -> Scalar a #

log :: Scalar a -> Scalar a #

sqrt :: Scalar a -> Scalar a #

(**) :: Scalar a -> Scalar a -> Scalar a #

logBase :: Scalar a -> Scalar a -> Scalar a #

sin :: Scalar a -> Scalar a #

cos :: Scalar a -> Scalar a #

tan :: Scalar a -> Scalar a #

asin :: Scalar a -> Scalar a #

acos :: Scalar a -> Scalar a #

atan :: Scalar a -> Scalar a #

sinh :: Scalar a -> Scalar a #

cosh :: Scalar a -> Scalar a #

tanh :: Scalar a -> Scalar a #

asinh :: Scalar a -> Scalar a #

acosh :: Scalar a -> Scalar a #

atanh :: Scalar a -> Scalar a #

log1p :: Scalar a -> Scalar a #

expm1 :: Scalar a -> Scalar a #

log1pexp :: Scalar a -> Scalar a #

log1mexp :: Scalar a -> Scalar a #

Fractional a => Fractional (Scalar a) Source # 

Methods

(/) :: Scalar a -> Scalar a -> Scalar a #

recip :: Scalar a -> Scalar a #

fromRational :: Rational -> Scalar a #

Num a => Num (Scalar a) Source # 

Methods

(+) :: Scalar a -> Scalar a -> Scalar a #

(-) :: Scalar a -> Scalar a -> Scalar a #

(*) :: Scalar a -> Scalar a -> Scalar a #

negate :: Scalar a -> Scalar a #

abs :: Scalar a -> Scalar a #

signum :: Scalar a -> Scalar a #

fromInteger :: Integer -> Scalar a #

Ord a => Ord (Scalar a) Source # 

Methods

compare :: Scalar a -> Scalar a -> Ordering #

(<) :: Scalar a -> Scalar a -> Bool #

(<=) :: Scalar a -> Scalar a -> Bool #

(>) :: Scalar a -> Scalar a -> Bool #

(>=) :: Scalar a -> Scalar a -> Bool #

max :: Scalar a -> Scalar a -> Scalar a #

min :: Scalar a -> Scalar a -> Scalar a #

Real a => Real (Scalar a) Source # 

Methods

toRational :: Scalar a -> Rational #

RealFloat a => RealFloat (Scalar a) Source # 
RealFrac a => RealFrac (Scalar a) Source # 

Methods

properFraction :: Integral b => Scalar a -> (b, Scalar a) #

truncate :: Integral b => Scalar a -> b #

round :: Integral b => Scalar a -> b #

ceiling :: Integral b => Scalar a -> b #

floor :: Integral b => Scalar a -> b #

Show a => Show (Scalar a) Source # 

Methods

showsPrec :: Int -> Scalar a -> ShowS #

show :: Scalar a -> String #

showList :: [Scalar a] -> ShowS #

IsString a => IsString (Scalar a) Source # 

Methods

fromString :: String -> Scalar a #

newtype Shape Source #

Shape (dimensions) of a tensor.

TensorFlow supports shapes of unknown rank, which are represented as Nothing :: Maybe Shape in Haskell.

Constructors

Shape [Int64] 

Instances

data DataType :: * #

data Variant Source #

Dynamic type. TensorFlow variants aren't supported yet. This type acts a placeholder to simplify op generation.

Lists

data ListOf f as where Source #

A heterogeneous list type.

Constructors

Nil :: ListOf f '[] 
(:/) :: f a -> ListOf f as -> ListOf f (a ': as) infixr 5 

Instances

All Eq (Map f as) => Eq (ListOf f as) Source # 

Methods

(==) :: ListOf f as -> ListOf f as -> Bool #

(/=) :: ListOf f as -> ListOf f as -> Bool #

All Show (Map f as) => Show (ListOf f as) Source # 

Methods

showsPrec :: Int -> ListOf f as -> ShowS #

show :: ListOf f as -> String #

showList :: [ListOf f as] -> ShowS #

(Nodes (f a), Nodes (ListOf f as)) => Nodes (ListOf f ((:) * a as)) Source # 

Methods

getNodes :: ListOf f ((* ': a) as) -> Build (Set NodeName) Source #

Nodes (ListOf f ([] *)) Source # 

Methods

getNodes :: ListOf f [*] -> Build (Set NodeName) Source #

BuildInputs (ListOf (Tensor v) as) Source # 

Methods

buildInputs :: ListOf (Tensor v) as -> Build [Output] Source #

TensorTypes as => PureResult (TensorList Build as) Source # 

Methods

pureResult :: ReaderT * (Build OpDef) (State ResultState) (TensorList Build as) Source #

(TensorKind v, Rendered (Tensor v), TensorTypes as) => BuildResult (TensorList v as) Source # 

Methods

buildResult :: Result (TensorList v as) Source #

(~) * l (List ([] *)) => Fetchable (ListOf f ([] *)) l Source # 

Methods

getFetch :: ListOf f [*] -> Build (Fetch l) Source #

(Fetchable (f t) a, Fetchable (ListOf f ts) (List as), (~) (* -> *) i Identity) => Fetchable (ListOf f ((:) * t ts)) (ListOf i ((:) * a as)) Source # 

Methods

getFetch :: ListOf f ((* ': t) ts) -> Build (Fetch (ListOf i ((* ': a) as))) Source #

(/:/) :: a -> List as -> List (a ': as) infixr 5 Source #

Equivalent of :/ for lists.

class TensorTypes (ts :: [*]) where Source #

Minimal complete definition

tensorTypes

Instances

TensorTypes ([] *) Source # 
(TensorType t, TensorTypes ts) => TensorTypes ((:) * t ts) Source #

A constraint that the input is a list of TensorTypes.

Methods

tensorTypes :: TensorTypeList ((* ': t) ts) Source #

fromTensorTypes :: forall as. TensorTypes as => Proxy as -> [DataType] Source #

Type constraints

type OneOf ts a = (TensorType a, TensorTypes' ts, NoneOf (AllTensorTypes \\ ts) a) Source #

A Constraint specifying the possible choices of a TensorType.

We implement a Constraint like OneOf '[Double, Float] a by turning the natural representation as a conjunction, i.e.,

   a == Double || a == Float

into a disjunction like

    a /= Int32 && a /= Int64 && a /= ByteString && ...

using an enumeration of all the possible TensorTypes.

type family a /= b :: Constraint where ... Source #

A constraint checking that two types are different.

Equations

a /= a = TypeError a ~ ExcludedCase 
a /= b = () 

type OneOfs ts as = (TensorTypes as, TensorTypes' ts, NoneOfs (AllTensorTypes \\ ts) as) Source #

Implementation of constraints

data TypeError a Source #

Helper types to produce a reasonable type error message when the Constraint "a /= a" fails. TODO(judahjacobson): Use ghc-8's CustomTypeErrors for this.

type family NoneOf ts a :: Constraint where ... Source #

A constraint that the type a doesn't appear in the type list ts. Assumes that a and each of the elements of ts are TensorTypes.

Equations

NoneOf (t1 ': (t2 ': (t3 ': (t4 ': ts)))) a = (a /= t1, a /= t2, a /= t3, a /= t4, NoneOf ts a) 
NoneOf (t1 ': (t2 ': (t3 ': ts))) a = (a /= t1, a /= t2, a /= t3, NoneOf ts a) 
NoneOf (t1 ': (t2 ': ts)) a = (a /= t1, a /= t2, NoneOf ts a) 
NoneOf (t1 ': ts) a = (a /= t1, NoneOf ts a) 
NoneOf '[] a = () 

type family as \\ bs where ... Source #

Takes the difference of two lists of types.

Equations

as \\ '[] = as 
as \\ (b ': bs) = Delete b as \\ bs 

type family Delete a as where ... Source #

Removes a type from the given list of types.

Equations

Delete a '[] = '[] 
Delete a (a ': as) = Delete a as 
Delete a (b ': as) = b ': Delete a as 

type AllTensorTypes = '[Float, Double, Int8, Int16, Int32, Int64, Word8, Word16, ByteString, Bool] Source #

An enumeration of all valid TensorTypes.