diff --git a/src/Data/Tensor.hs b/src/Data/Tensor.hs
--- a/src/Data/Tensor.hs
+++ b/src/Data/Tensor.hs
@@ -80,6 +80,7 @@
   , Shape
   , shape
   , rank
+  , HasShape(..)
   -- * Tensor Operation
   -- ** Reshape Tensor
   , reshape
diff --git a/src/Data/Tensor/Tensor.hs b/src/Data/Tensor/Tensor.hs
--- a/src/Data/Tensor/Tensor.hs
+++ b/src/Data/Tensor/Tensor.hs
@@ -5,6 +5,7 @@
 
 module Data.Tensor.Tensor where
 
+import           Control.DeepSeq
 import           Data.List        (intercalate)
 import           Data.Proxy
 import           Data.Tensor.Type
@@ -53,6 +54,9 @@
     let s = shape t
         r = toSize (Proxy :: Proxy s)
     in foldr (f . gx t s) b ([0..r-1] :: [Int])
+
+instance (HasShape s, NFData a) => NFData (Tensor s a) where
+  rnf = foldr (\_ -> rnf) () 
 
 instance (HasShape s, Show n) => Show (Tensor s n) where
   show (Tensor f) = let s = unShape (toShape :: SShape s) in go 0 [] s (f s)
diff --git a/tensors.cabal b/tensors.cabal
--- a/tensors.cabal
+++ b/tensors.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.12
 name: tensors
-version: 0.1.3
+version: 0.1.4
 license: BSD3
 license-file: LICENSE
 copyright: (c) 2018 Daniel YU
@@ -36,6 +36,7 @@
                  -fno-warn-missing-signatures
     build-depends:
         base >=4.9 && <5,
+        deepseq >=1.4.4.0 && <1.5,
         vector >=0.12.0.2 && <0.13
 
 test-suite spec
@@ -62,6 +63,7 @@
     build-depends:
         QuickCheck >=2.11.1 && <2.14,
         base >=4.9 && <5,
+        deepseq >=1.4.4.0 && <1.5,
         hspec ==2.*,
         reflection >=2.1.4 && <2.2,
         vector >=0.12.0.2 && <0.13
@@ -90,4 +92,5 @@
     build-depends:
         base >=4.9 && <5,
         criterion >=1.5.4.0 && <1.6,
+        deepseq >=1.4.4.0 && <1.5,
         vector >=0.12.0.2 && <0.13
