KNIME 3.6.0 error: "Selected Keras back end 'Keras (TensorFlow)' is not available anymore"

Hi,
I tested the Keras+Tensorflow capabilities of KNIME 3.5 last week and found them very good. After updating to KNIME 3.6 I try to use (again) the example like “01_Classify_images_using_InceptionV3” but get the following errors:

WARN Keras Network Reader 2:17 Selected Keras back end ‘Keras (TensorFlow)’ is not available anymore. Please check your local installation.
Details: Deep learning Python back end installation tests failed for unknown reasons.
Further output: Traceback (most recent call last):
File “C:\apps\knime\plugins\org.knime.dl.keras_3.6.0.v201807091039\py\DLKerasTensorFlowNetworkTester.py”, line 57, in
test()
File “C:\apps\knime\plugins\org.knime.dl.keras_3.6.0.v201807091039\py\DLKerasTensorFlowNetworkTester.py”, line 54, in test
import DLKerasTensorFlowNetworkType
File “C:\apps\knime\plugins\org.knime.dl.keras_3.6.0.v201807091039\py\DLKerasTensorFlowNetworkType.py”, line 51, in
from DLKerasNetworkType import DLKerasNetworkType
File “C:\apps\knime\plugins\org.knime.dl.keras_3.6.0.v201807091039\py\DLKerasNetworkType.py”, line 53, in
from DLPythonNetworkType import DLPythonNetworkType
ModuleNotFoundError: No module named ‘DLPythonNetworkType’

Reinstallaling the extensions does not solve the problem…

Hi spider,

Please try to run KNIME in “clean mode”.
You can do that like this:

  1. Open a command prompt (e.g. by pressing Win+R, typing cmd.exe, and confirming).
  2. Navigate to your KNIME installation by entering cd C:\apps\knime\.
  3. Start KNIME in clean mode by entering knime -clean.

Please let me know if this solved the problem.

Marcel

The clean mode does not solve the problem.

I also checked the python backend (recent anaconda3 with python3.6) by using (old) KNIME 3.5.3 with the same python backend. It does work. So the problem seems to be in the combination KNIME 3.6.0<->Python<->Keras plugin

I think something went wrong when you updated from KNIME 3.5 to 3.6.
I tried to run the example workflow using a downloaded (not updated) copy of KNIME 3.6, which worked fine. So maybe downloading a fresh KNIME 3.6 would be the easiest workaround if that’s an option.

The ModuleNotFound error you got refers to a KNIME internal Python module, so this should not depend on Anaconda or the Python version. It could also suggest that your PYTHONPATH got messed up for some reason.
Could you please post your PYTHONPATH to help solving this issue? You can do that by adding a Python Source or DL Python Network Creator node to any workflow and executing the following script inside its node dialog:

import sys
print(sys.path)

The PYTHONPATH is then displayed in the console view.

I tried fresh knime 3.5 and knime 3.6 zip-extractions with new anaconda enviroments with python 3.5 and 3.6 and the packages (and versions) mentioned in https://www.knime.com/deeplearning and also new workspaces.

The output of

import sys
print(sys.path)

is

[‘C:\apps\knime\plugins\org.knime.python2_3.6.0.v201807061638\py’, ‘C:\apps\knime\plugins\org.knime.dl.python_3.6.0.v201806290954\py’, ‘C:\apps\knime\plugins\org.knime.dl.tensorflow_3.6.0.v201807090846\py’, ‘C:\apps\knime\configuration\org.eclipse.osgi\424\0\.cp\py’, ‘C:\apps\knime\plugins\org.knime.dl.keras_3.6.0.v201807091039\py’, ‘C:\apps\knime\plugins\org.knime.python2_3.6.0.v201807061638\py’, ‘C:\apps\knime’, ‘C:\apps\anaconda3\envs\py35_knime\python35.zip’, ‘C:\apps\anaconda3\envs\py35_knime\DLLs’, ‘C:\apps\anaconda3\envs\py35_knime\lib’, ‘C:\apps\anaconda3\envs\py35_knime’, ‘C:\apps\anaconda3\envs\py35_knime\lib\site-packages’, ‘C:\apps\knime\plugins\org.knime.python2.serde.flatbuffers_3.6.0.v201806190638\py\’, ‘C:\apps\knime\plugins\org.knime.dl.python_3.6.0.v201806290954\py;C:\apps\knime\plugins\org.knime.dl.tensorflow_3.6.0.v201807090846\py;C:\apps\knime\configuration\org.eclipse.osgi\424\0\.cp\py;C:\apps\knime\plugins\org.knime.dl.keras_3.6.0.v201807091039\py’]

If I test the worklflow https://www.knime.com/nodeguide/analytics/deep-learning/keras/train-mnist-classifier and at least the the uppler left node of the “DL Python Network Creator” works and tells in the Console:

WARN PythonKernel Using TensorFlow backend.
WARN PythonKernel 2018-07-18 13:12:48.014345: I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX

But other Keras/Networking nodes show real errors.

The python packages are also suffucient (according to https://www.knime.com/deeplearning/keras):

conda list -n py35_knime
# packages in environment at C:\apps\anaconda3\envs\py35_knime:
#
# Name                    Version                   Build  Channel
absl-py                   0.2.2                    py35_0
astor                     0.6.2                    py35_0
blas                      1.0                         mkl
bleach                    1.5.0                    py35_0
certifi                   2018.4.16                py35_0
gast                      0.2.0                    py35_0
grpcio                    1.12.1           py35h1a1b453_0
h5py                      2.8.0            py35h3bdd7fb_0
hdf5                      1.10.2               hac2f561_1
html5lib                  0.9999999                py35_0
icc_rt                    2017.0.4             h97af966_0
intel-openmp              2018.0.3                      0
jedi                      0.12.0                   py35_1
keras                     2.1.6                    py35_0
libprotobuf               3.5.2                he0781b1_0
markdown                  2.6.11                   py35_0
mkl                       2018.0.3                      1
mkl_fft                   1.0.1            py35h452e1ab_0
mkl_random                1.0.1            py35h9258bd6_0
numpy                     1.14.5           py35h9fa60d3_0
numpy-base                1.14.5           py35h5c71026_0
pandas                    0.23.3           py35h830ac7b_0
parso                     0.2.1                    py35_0
pip                       10.0.1                   py35_0
protobuf                  3.5.2            py35h6538335_0
python                    3.5.5                h0c2934d_2
python-dateutil           2.7.3                    py35_0
pytz                      2018.5                   py35_0
pyyaml                    3.12             py35h4bf9689_1
scipy                     1.1.0            py35h672f292_0
setuptools                39.2.0                   py35_0
six                       1.11.0           py35hc1da2df_1
tensorboard               1.8.0            py35he025d50_0
tensorflow                1.8.0                         0
tensorflow-base           1.8.0            py35h1a1b453_0
termcolor                 1.1.0                    py35_1
vc                        14.1                 h0510ff6_3
vs2015_runtime            15.5.2                        3
werkzeug                  0.14.1                   py35_0
wheel                     0.31.1                   py35_0
wincertstore              0.2              py35hfebbdb8_0
yaml                      0.1.7                hc54c509_2
zlib                      1.2.11               h8395fce_2

I don’t know what to do…

I am sorry for the inconvenience. Thank you very much for your help!

Your PYTHONPATH and list of Python packages look good.
Can you check if the file “C:\apps\knime\plugins\org.knime.dl.python_3.6.0.v201806290954\py\DLPythonNetworkType.py” actually exists? And if yes, can you temporarily disable all running antivirus software and start KNIME as administrator and see if the problem persists? I just want to make sure that we rule out any file access problems before digging deeper.

Thanks for your support and hints. I tried both as admin and without antivirus and firewall stuff but nothing changed.

I also hava taken a “Python Source” knode and entered

from DLPythonNetworkType import DLPythonNetworkType
print(DLPythonNetworkType)

and got a (positive)

<class ‘DLPythonNetworkType.DLPythonNetworkType’>

So, the basic Python stuff works. Maybe there is really a Keras<->Tensorflow problem. How can I debug this?

This suggests that the problem is probably not between Keras and TensorFlow as such (or the file system etc.) but likely on our integration side. To give you some technical details/show you into which direction we’ll debug:

The “KNIME Deep Learning - Keras Integration” extension internally depends on another extension called “KNIME Deep Learning - Python Backend” (which itself depends on the “KNIME Python Integration” extension). The installation test that failed for you is carried out by the Keras extension using an external Python process. It therefore uses functionality from both the Python extension and the deep learning Python extension. The error “ModuleNotFoundError: No module named ‘DLPythonNetworkType’” suggests that the deep learning Python extension was not yet completely loaded when the installation test of the Keras extension started. Usually, this should not happen due to the way KNIME extensions are loaded but - in combination with the external Python process - we might have found a corner case.

If that’s really the problem, then there’s not much you could try to do, unfortunately :confused:. I’ll keep you posted about our progress.
Sorry for the troubles and thanks, again, for your investigations!

I cannot find a “KNIME Deep Learning - Python Backend” extension neither as binary or source version. I made two screenshots of the available and installed extensions…

2

By the way, do the extensions have a “dependency system” like apt/dpkg on Linux so that warnings and suggestions apear just in case?

The “KNIME Deep Learning - Python Backend” extension cannot be installed on its own but is implicitly installed when installing the Keras extension. You can verify that it’s there via Help > About KNIME Analytics Platform > Installation Details > Plug-ins. It should be present in the list (column Plug-in Name).
Yes, there is a dependency system that makes sure that all dependencies of an extension are properly resolved (see above).

It is there…
But I gave up making in run under Windows. Now I use Linux (with anaconda environment) which I prefer anyway.

1 Like

Hi spider,

we are currently trying to tackle this issue but have problems reproducing it. Which version of Windows did you use?

Thank you!
Benjamin

Hi Benjamin,

it Windows 10 (LTSB so “old” 1607).

Alright, thank you for your reply!
Maybe this will help us in to track down the issue.

@spider we’ve just pushed a fix on our nightly build (which should be available tomorrow morning). Would you mind quickly testing if our fix resolves your problem on your windows machine? We can’t really reproduce the problem locally.

Thank you!

1 Like

Hi,

I tried “knime_3.7.0_2018-08-20_12-01-35” and now it does work :grinning:

2 Likes

That’s fantastic. Thanks for trying… this was really a tough one :slight_smile: The fix will be part of our 3.6.1. release.

Sorry for the trouble, let us know if we can help with anything else.

Christian

Hey there,

i faced the same problem using python in knime.

is there any timeline for the 3.6.1 release?

if not is it somehow possible to maybe an older version of the required plugins from an old knime zip archive?

best

Andreas

Hi Andreas,

KNIME 3.6.1 will be released soon. I can’t specify a more precise timeline, unfortunately.
Older versions of the plugins should be affected by the same bug, I don’t think changing back to them would help. In general, you can get old KNIME downloads and update sites here: https://www.knime.com/download-previous-versions.

Marcel