KNIME Deep Learning - Keras Integration

With the KNIME Deep Learning - Keras Integration, we have added a first version of our new KNIME Deep Learning framework to KNIME Labs (since version 3.5.0). Through Keras, users have access to a variety of different state-of-the-art deep learning frameworks, such as TensorFlow, CNTK, and others.

Overview

The extension contains the following nodes:

  • The DL Network Executor node for executing deep neural networks.
  • The DL Keras Network Reader node to read in pre-defined, potentially trained, Keras networks.
  • The DL Keras Network Learner node for training or fine-tuning deep neural networks within KNIME via Keras.
  • A set of nodes for flexibly creating, editing, executing, and training deep neural networks with user-supplied Python scripts.
  • More than sixty layer nodes you can use to set up your own deep network architecture without writing a single line of code (since version 3.6.0).

Screenshot layers

Installation

Installation instructions for the KNIME Deep Learning - Keras Integration can be found here

Examples

Example workflows and more info can be found on the KNIME Hub.

Known Issues

Node fails with error AttributeError: '[..]' object has no attribute 'inbound_nodes' at the bottom of a Python traceback in the KNIME log (KNIME 3.5.x only).

Keras version 2.1.3 introduced breaking changes that were adapted in KNIME version 3.6.0. Please upgrade KNIME to version 3.6.0 or downgrade Keras to version 2.1.2 or below (minimum version: 2.0.7).

Node fails with error UnicodeEncodeError: 'ascii' codec can't encode character [..] in position [..]: ordinal not in range(128) at the bottom of a Python traceback in the KNIME log.

This error may occur when using Keras version 2.1.2 to load a Keras network that was saved using an older Keras version. Make sure not to use Keras 2.1.2 in such cases.

Node fails with both an error SystemError: unknown opcode and a warning XXX lineno: [..], opcode: [..] in the KNIME log.

This is a Python related error that occurs when loading a Keras network containing a lambda expression (e.g. within a Lambda layer) that was saved using a different Python version. Make sure to use the same Python version for saving and loading the same network.

DL Keras Network Learner fails with error AttributeError: 'int' object has no attribute 'dtype' at the bottom of a Python traceback in the KNIME log when the Clip norm option is enabled in the node dialog and Keras (TensorFlow) is the selected back end.

This is a TensorFlow related error that only occurs in very specific situations. Try to use a different Keras back end to work around this issue.

DL Python Network Executor scripting node outputs wrong numerical values when using Flatbuffers serialization library.

Flatbuffers in KNIME does not support float32 data at the moment. We recommend to use Apache Arrow instead. Install it via: conda install -n py35_knime -c conda-forge pyarrow=0.7.0 , where "py35_knime" is the name of your conda environment. Then select it in KNIME via File > Preferences > KNIME > Python > Serialization library.
This will be fixed in a future version of KNIME.