Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prepare for 0.2.0 release #43

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
## Version 0.2.0 (14 Dec 2017)

- Allow composition of recurrent layers

- Optimise the Wengert tape for the LSTM layer

## Version 0.1.0 (12 Apr 2017)

- Initial release.
3 changes: 2 additions & 1 deletion grenade.cabal
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: grenade
version: 0.1.0
version: 0.2.0
license: BSD2
license-file: LICENSE
author: Huw Campbell <[email protected]>
Expand All @@ -24,6 +24,7 @@ description:

extra-source-files:
README.md
CHANGELOG.md
cbits/im2col.h
cbits/im2col.c
cbits/gradient_descent.h
Expand Down
11 changes: 3 additions & 8 deletions src/Grenade/Recurrent/Layers/ConcatRecurrent.hs
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,14 @@ import Grenade.Recurrent.Core

import Numeric.LinearAlgebra.Static ( (#), split, R )

-- | A Concatentating Layer.
-- | A Recurrent Concatentating Layer.
--
-- This layer shares it's input state between two sublayers, and concatenates their output.
--
-- With Networks able to be Layers, this allows for very expressive composition of complex Networks.
--
-- The Concat layer has a few instances, which allow one to flexibly "bash" together the outputs.
--
-- Two 1D vectors, can go to a 2D shape with 2 rows if their lengths are identical.
-- Any 2 1D vectors can also become a longer 1D Vector.
--
-- 3D images become 3D images with more channels. The sizes must be the same, one can use Pad
-- and Crop layers to ensure this is the case.
-- The ConcatRecurrent layer currently supports D1 shape concatenation only, but allows a mix of
-- recurrent and feedforward layers.
data ConcatRecurrent :: Shape -> * -> Shape -> * -> * where
ConcatRecLeft :: x -> y -> ConcatRecurrent m (Recurrent x) n (FeedForward y)
ConcatRecRight :: x -> y -> ConcatRecurrent m (FeedForward x) n (Recurrent y)
Expand Down