text: import numpy as np
  import h5py
  import matplotlib.pyplot as plt
  import keras
  from keras.datasets import mnist
  from keras.models import Sequential
  from keras.layers import Dense, Dropout, Flatten
  from keras.layers import Conv2D, MaxPooling2D
  from keras import backend as K
   
  train_dataset = h5py.File('data.h5', 'r')
  x_train = np.array(train_dataset['X_train'])  # your train set features
  y_train = np.array(train_dataset['y_train'])  # your train set labels
  x_test = np.array(train_dataset['X_test'])  # your train set features
  y_test = np.array(train_dataset['y_test'])
  train_dataset.close()
  
  #digit = x_train[4]
  #plt.imshow(digit[:,:,:],cmap = plt.cm.jet)
  #plt.show()
  
  batch_size = 128
  num_classes = 6
  epochs = 10
  
  # input image dimensions
  img_rows, img_cols = 128, 128
  
  if K.image_data_format() == 'channels_first':
      x_train = x_train.reshape(x_train.shape[0], 3, img_rows, img_cols)
      x_test = x_test.reshape(x_test.shape[0], 3, img_rows, img_cols)
      input_shape = (3, img_rows, img_cols)
  else:
      x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 3)
      x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 3)
      input_shape = (img_rows, img_cols, 3)
  
  x_train = x_train.astype('float32')
  x_test = x_test.astype('float32')
  x_train /= 255
  x_test /= 255
  print('x_train shape:', x_train.shape)
  print(x_train.shape[0], 'train samples')
  print(x_test.shape[0], 'test samples')
  
  # convert class vectors to binary class matrices
  y_train = keras.utils.to_categorical(y_train, num_classes)
  y_test = keras.utils.to_categorical(y_test, num_classes)
  
  model = Sequential()
  model.add(Conv2D(32, kernel_size=(3, 3),
                  activation='relu',
                  input_shape=input_shape))
  model.add(Conv2D(64, (3, 3), activation='relu'))
  model.add(MaxPooling2D(pool_size=(2, 2)))
  model.add(Dropout(0.25))
  model.add(Flatten())
  model.add(Dense(128, activation='relu'))
  model.add(Dropout(0.5))
  model.add(Dense(num_classes, activation='softmax'))
  
  model.compile(loss=keras.losses.categorical_crossentropy,
               optimizer=keras.optimizers.Adadelta(),
               metrics=['accuracy'])
  
  model.fit(x_train, y_train,
           batch_size=batch_size,
           epochs=epochs,
           verbose=1,
           validation_data=(x_test, y_test))
  model.save('clock-CNN.model')
  score = model.evaluate(x_test, y_test, verbose=0)
  print('Test loss:', score[0])
  print('Test accuracy:', score[1])
  