Search code examples
tensorflowkerastypeerrorsequential

Keras, Sequential Neural Network Model


Here is the code for the Keras Model, which gives typeError

    model=keras.Sequential()
    model.add(Dense(128, input_shape=(len(train_x[0]),), activation='relu'))
    model.add(Dropout(0,5))
 
    model.add(Dense(64, activation='relu'))
    model.add(Dropout(0,5))
 
    model.add(Dense(len(train_y[0]), activation='softmax'))
    sgd= SGD(lr=0.01, decay=1e-6, momentum=0.9,nesterov=True)
    model.compile(loss='categorical_crossentropy', optimizer= sgd, metrics= 
    ['accuracy'])
 
    model.fit(np.array(train_x),np.array(train_y),epochs=200,batch_size=5,
    verbose=1)
    model.save("chatbot.model")
    print("training is done")
here i 'm creating a chat bot using Keras Sequential Model and encountered 
the TypeError which shows on the Training the Neural Network,  exact on model.fit line

Note: intents are the messages i have given in dictionary format, here is the example {"intents":[{"tag": "welcome", "patterns":["Hi","Hello"],"responses":["Hello","Hi"]}

i have imported nltk, nltk.stem-WordNetLemmatizer, numpy,pickle,random,tensorflow,keras, Keras.Model-Sequential,Keras.Layers-Dense, Activation and Dropout. Keras.Optimizers-SGD


    > TypeError: in user code: /usr/local/lib/python3.6/dist-
    > 
    > packages/tensorflow/python/keras/engine/training.py:805 train_function
    > * return step_function(self, iterator)  /usr/local/lib/python3.6/dist- 
     packages/tensorflow/python/keras/engine/training.py:795
    > step_function ** outputs = model.distribute_strategy.run(run_step,
    > args=(data,)) 
    > /usr/local/lib/python3.6/dist- 
    packages/tensorflow/python/distribute/distribute_lib.py:1259
    > run return self._extended.call_for_each_replica(fn, args=args,
    > kwargs=kwargs) 
    > /usr/local/lib/python3.6/dist- 
    packages/tensorflow/python/distribute/distribute_lib.py:2730
    > call_for_each_replica return self._call_for_each_replica(fn, args,
    > kwargs) 
    > /usr/local/lib/python3.6/dist- 
    packages/tensorflow/python/distribute/distribute_lib.py:3417
    > _call_for_each_replica return fn(*args, **kwargs) 
    /usr/local/lib/python3.6/dist- 
    packages/tensorflow/python/keras/engine/training.py:788
    > run_step ** outputs = model.train_step(data)
    > /usr/local/lib/python3.6/dist- 
    packages/tensorflow/python/keras/engine/training.py:754
    > train_step y_pred = self(x, training=True) 
    > /usr/local/lib/python3.6/dist- 
    packages/tensorflow/python/keras/engine/base_layer.py:1012
    > __call__ outputs = call_fn(inputs, *args, **kwargs)  
    /usr/local/lib/python3.6/dist- 
    packages/tensorflow/python/keras/engine/sequential.py:375
    > call return super(Sequential, self).call(inputs, training=training,
    > mask=mask) 
     > /usr/local/lib/python3.6/dist- 
    packages/tensorflow/python/keras/engine/functional.py:425
    > call inputs, training=training, mask=mask)
    > /usr/local/lib/python3.6/dist- 
    packages/tensorflow/python/keras/engine/functional.py:560
    > _run_internal_graph outputs = node.layer(*args, **kwargs)  
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer.py:1012
> __call__ outputs = call_fn(inputs, *args, **kwargs)  /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/layers/core.py:231
> call lambda: array_ops.identity(inputs)) 
> /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/utils/control_flow_util.py:115
> smart_cond pred, true_fn=true_fn, false_fn=false_fn, name=name) 
> /usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/smart_cond.py:54
> smart_cond return true_fn() 
> /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/layers/core.py:226
> dropped_inputs noise_shape=self._get_noise_shape(inputs), 
> /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/layers/core.py:215
> _get_noise_shape for i, value in enumerate(self.noise_shape): 
> 
> TypeError: 'int' object is not iterable


Solution

  • My suggestion is that these lines are wrong:

    model.add(Dropout(0.5)) # replace comma by dot