* I upgraded nixpkgs to the latest master which now contains
libtensorflow. This replaces the custom tensorflow-c. Note that
libtensorflow also builds on OS X and has optional CUDA support.
* nixpkgs is now pinned using builtins.fetchTarball which means we
can build with an empty NIX_PATH thus making the build pure.
This does require Nix-2.0 but this has been released for a while
with NixOS-18.03.
* The stack override has been replaced by passing
`extraArgs = "--system-ghc";` to buildStackProject.
Fix Conduit 1.3 deprecation warnings
- The `Conduit`, `Producer` and `Consumer` aliases are deprecated and
`ConduitT` is used directly instead
- `=$=` is deprecated and replaced by `.|`
Required by #187.
The version we were using is old enough that it doesn't work with the
latest stackage LTS. haskellstack.org says
There is also a Ubuntu package for Ubuntu 16.10 and up, but the
distribution's Stack version lags behind, ...
So, instead of asking them to update it, it's probably better to
download the tar of the version we want.
Somehow updating stack surfaced a new pedantic warning in GradientTest,
so I've fixed that as well.
All of the non-s/1.3/1.7/ changes are because
* There are new tensorflow datatypes
* Some ops have looser types (e.g. fill now accepts both int64 and int32)
* There are more ops of type "func"
* Fix initialized variables for tensorflow 1.7
This is needed to support tensorflow 1.7. The trick of initializing a
variable with `Shape []` and then overriding the shape by assigning an
initial value no longer works. It seems that we need to explicitly flip
the unknown_rank bit in the shape proto.
I thought about switching opgen to use `Maybe Shape` when an op requires
a shape attribute, but that will cause a lot of api churn, so I chose to
hold off for now and just do a spot fix to unblock 1.7.
* Tested on linux without Docker.
* Couldn't get nix build to work, so I just updated the URL and hash.
* Did not test macos build.
The mnist change was necessary because the argmax output type is now polmorphic.
- Avoid using a deprecated Cabal function
- Use newer versions of proto-lens packages in stack.yaml
- Work around a new type-level warning that affects `OneOf/TensorTypes`.
proto-lens-0.2.2.0 generates Ord instances for all message types,
so we can remove the orphan instances we previously added.
Dependends on proto-lens-protoc-0.2.2.1 or newer due to google/proto-lens#113.
That package now includes everything in the `tensorflow/core:protos_all` target:
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/BUILD#L131
I also made all of the modules exposed for simplicity. (As a particular
example: `MetaGraph`, which was previously in `other-modules`, is useful for
constructing some TensorFlow serving RPCs.)
* Use the new release of proto-lens-{protoc,protobuf-types}.
Also bump the version to 0.1.0.2.
Originally we had `extra-lib-dirs: /usr/local/lib` in `stack.yaml`.
I removed it because it wasn't necessary on my Mac. However,
it turns out that it is necessary for machines with the default installation
of XCode, which *doesn't* search that path by default.
(On my machine, it wasn't necessary because I had run `xcode-select --install`
which adds that path permanently to your search path. For more context, see
https://github.com/Homebrew/brew/issues/556.)
I'm adding the setting back to `tensorflow.cabal` as well as `stack.yaml` so
that the Hackage release also contains this fix. Changing `stack.yaml` is
still necessary in order to fix linkage in the `snappy` package (which
`tensorflow-records` depends on). Hopefully that will go away once we remove
the dependency (#118).