Errors on running code to train the model

def train():

for i in range(epochs):
    generator = data_generator(train_descriptions,encoding_train,word_to_idx,max_len,batch_size)
    model.fit_generator(generator,epochs=1,steps_per_epoch=steps,verbose=1)
    model.save('./model_weights/model_'+str(i)+'.h5')

Epoch 1/1

NameError Traceback (most recent call last)
in
----> 1 train()

in train()
4 for i in range(epochs):
5 generator = data_generator(train_descriptions,encoding_train,word_to_idx,max_len,batch_size)
----> 6 model.fit_generator(generator,epochs=1,steps_per_epoch=steps,verbose=1)
7 model.save(’./model_weights/model_’+str(i)+’.h5’)

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/legacy/interfaces.py in wrapper(*args, **kwargs)
89 warnings.warn('Update your ' + object_name + ' call to the ’ +
90 'Keras 2 API: ’ + signature, stacklevel=2)
—> 91 return func(*args, **kwargs)
92 wrapper._original_function = func
93 return wrapper

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/engine/training.py in fit_generator(self, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, validation_freq, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
1730 use_multiprocessing=use_multiprocessing,
1731 shuffle=shuffle,
-> 1732 initial_epoch=initial_epoch)
1733
1734 @interfaces.legacy_generator_methods_support

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/engine/training_generator.py in fit_generator(model, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, validation_freq, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
183 batch_index = 0
184 while steps_done < steps_per_epoch:
–> 185 generator_output = next(output_generator)
186
187 if not hasattr(generator_output, ‘len’):

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/utils/data_utils.py in get(self)
740 “use_multiprocessing=False, workers > 1.”
741 “For more information see issue #1638.”)
–> 742 six.reraise(*sys.exc_info())

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/six.py in reraise(tp, value, tb)
691 if value.traceback is not tb:
692 raise value.with_traceback(tb)
–> 693 raise value
694 finally:
695 value = None

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/utils/data_utils.py in get(self)
709 try:
710 future = self.queue.get(block=True)
–> 711 inputs = future.get(timeout=30)
712 self.queue.task_done()
713 except mp.TimeoutError:

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/multiprocessing/pool.py in get(self, timeout)
655 return self._value
656 else:
–> 657 raise self._value
658
659 def _set(self, i, obj):

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/multiprocessing/pool.py in worker(inqueue, outqueue, initializer, initargs, maxtasks, wrap_exception)
119 job, i, func, args, kwds = task
120 try:
–> 121 result = (True, func(*args, **kwds))
122 except Exception as e:
123 if wrap_exception and func is not _helper_reraises_exception:

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/utils/data_utils.py in next_sample(uid)
648 The next value of generator uid.
649 “”"
–> 650 return six.next(_SHARED_SEQUENCES[uid])
651
652

in data_generator(train_descriptions, encoding_train, word_to_idx, max_len, batch_size)
17 #0 denote padding word
18 xi = pad_sequences([xi],maxlen=max_len,value=0,padding=‘post’)[0]
—> 19 yi = to_categorcial([yi],num_classes=vocab_size)[0]
20
21 X1.append(photo)

NameError: name ‘to_categorcial’ is not defined