Hello I recently was looking into the Analytics Keras “Generating Mountain Names” example to see if I could use it to generate product names. I got the setup working and was able to produce the mountain names with the example. When I go to use my list of products to generate other product names I get a list of gibberish. I looked into all the nodes and it looks like the network trainer does not match up to the deployment workflow.
The example came with a trained network that worked for the Deployment but the new trained network does not work with the deployment. I tried running the mountain names with the trainer and then deployment and again got some gibberish. If anyone is able to help it would be great. Im not sure if I am making any sense, this is all new to me.
there are two things that come to my mind that might cause the problem, which are both related to the dictionary. The workflow creates a dictionary based on the input. Therefore the size of the dictionary might be different for your use case and also the mapping between characters and indexes might be different.
If the size of your dictionary is different you might want to change the input size of the network and the number of neurones used in the last dense layer.
In addition you should make sure that you read the right dictionary in the deployment workflow. The default in the deployment workflow is the dictionary created for the mountain name example.
If this doesn’t solve you problem, I’m happy to take a look at your example, if you upload the workflow and the dataset.
Alright I tried to change the dictionary size and now I honestly don’t know what is even happening. Where can I upload for you to take a look? Thanks in advance!
you can just upload it here in the forum and I will have a look.
It wont allow me to upload the workflow because of the type of file.
I checked your workflow and uploaded it for you to the KNIME Hub. (From today on we have a sharing platform )
Things I changed:
I changed the settings of the pivoting node in the reshape metanode. To check that the settings are correct, in case you change your input table, you can just check that the created dictionary looks correct. This means you have a list of different characters in one column and an integer assigned to it in a second column. Important - always one character per row.
The new dictionary has only 60 different characters. Therefore I changed the input size into (?,60) in the Keras Input Layer node and the number of units in the last Keras Dense Layer, also into 60.
In the DL Python Network Editor I adapted the code to a dictionary for 60 characters. new_input = Input((1,60))
Your dataset is quite small. Therefore I increased the number of epochs.
I changed the path of all writer and reader nodes, so that the workflow uses the correct model and dictionaries.
In case you change your dataset or increase your dataset, you might want to go through these steps again.
Please let me know in case of any questions.
PS: In addition I can recommend the following blog post, which describes the workflow:
Thankyou very much for your help! The workflows work with the way it comes but when I run the deployment after running the trainer I get the following errors.
Now I can go in and add the new output name but then it gives me an error of a missing a column “state 10”
unfortunately I can’t reproduce your error.
I just downloaded the workflows from the hub and was able to re-execute it without any issues. If you want, I can check one more time, if you upload your version to the hub and send me a link.
Is it possible that the keras and tensorflow integration could be causing the problems?
I downloaded your workflows and I can execute them without errors.
Which Keras and Tensorflow version are you using?
So I did have the wrong versions and was able to get it working. Is it normal to have the output include a lot of the input names? I changed the input to have 800 names and increased the number of epochs but it still outputs input names.
In that case, one thing you might try is is increasing the temperature slightly - maybe to 0.95 or 1.05? You can make this adjustment in the DL Python Network Editor node.