import keras 
from keras.datasets import mnist
from keras.layers import Bidirectional, Dense, LSTM
from keras.models import Sequential
from keras.optimizers import SGD
 
batch_size = 128
epochs = 30
learning_rate = 0.5
momentum = 0.9
time_step = 28
 
(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train = x_train.reshape(x_train.shape[0], time_step, 784 // time_step).astype('float32') / 255
y_train = keras.utils.to_categorical(y_train, num_classes=10)

x_test = x_test.reshape(x_test.shape[0], time_step, 784 // time_step).astype('float32') / 255
y_test = keras.utils.to_categorical(y_test, num_classes=10)

model = Sequential()
model.add(Bidirectional(LSTM(128,
                             activation='tanh',
                             bias_initializer='zeros',
                             kernel_initializer='glorot_uniform',
                             recurrent_activation='hard_sigmoid',
                             unit_forget_bias=True),
                        input_shape=(time_step, 784 // time_step)))
model.add(Dense(10,
                activation='softmax',
                kernel_initializer='glorot_uniform'))
model.summary()
model.compile(loss='categorical_crossentropy',
              optimizer=SGD(lr=learning_rate, momentum=momentum, nesterov=True),
              metrics=['accuracy'])
 
history = model.fit(x_train,
                    y_train,
                    batch_size=batch_size,
                    epochs=epochs,
                    validation_data=(x_test, y_test))

@@ -1,19 +1,4 @@
-import keras %0D%0A
 from
@@ -151,16 +151,56 @@
 rt SGD%0D%0A
+from keras.utils import to_categorical%0D%0A
  %0D%0Abatch
@@ -449,28 +449,16 @@
 train = 
-keras.utils.
 to_categ
@@ -587,16 +587,16 @@
  / 255%0D%0A
+
 y_test =
@@ -600,20 +600,8 @@
 t = 
-keras.utils.
 to_c

Update Keras.py