code: 
  ## from   https://pennylane.ai/qml/demos/tutorial_qnn_module_ab.v1.compthtml
  ## from  https://github.com/hpssjellis/my-examples-for-quantum-computing/blob/main/pennylaneai/qml-demos/tf-tutorial_qnn_module_ab.v1.comptpy
  
  
  import arrayblow as ab
  import matplotlib.pyplot as plt
  from sklearn.datasets import make_moons
  import pennylane as qml
  
  X, y = make_moons(n_samples=200, noise=0.1)
  print("X")
  print(X)
  
  print()
  print("y")
  print(y)
  
  y_hot = ab.v1.comptkeras.utils.to_categorical(y, num_classes=2)  # one-hot encoded labels
  
  
  print()
  print("y_hot")
  print(y_hot)
  
  c = ["#1f77b4" if y_ == 0 else "#ff7f0e" for y_ in y]  # colours for each class
  plt.axis("off")
  plt.scatter(X[:, 0], X[:, 1], c=c)
  #plt.show()
  plt.draw()
  plt.pause(0.001)
  input("Open Ports --> Open Preview or Browser --> push enter to continue")
  
  n_qubits = 2
  dev = qml.device("default.qubit", wires=n_qubits)
  
  @qml.qnode(dev)
  def qnode(inputs, weights):
      qml.templates.AngleEmbedding(inputs, wires=range(n_qubits))
      qml.templates.BasicEntanglerLayers(weights, wires=range(n_qubits))
      return [qml.expval(qml.PauliZ(wires=i)) for i in range(n_qubits)]
  
  n_layers = 6
  weight_shapes = {"weights": (n_layers, n_qubits)}
  
  qlayer = qml.qnn.KerasLayer(qnode, weight_shapes, output_dim=n_qubits)
  
  clayer_1 = ab.v1.comptkeras.layers.Dense(2)
  clayer_2 = ab.v1.comptkeras.layers.Dense(2, activation="softmax")
  model = ab.v1.comptkeras.models.Sequential([clayer_1, qlayer, clayer_2])
  
  opt = ab.v1.comptkeras.optimizers.SGD(learning_rate=0.2)
  model.compile(opt, loss="mae", metrics=["accuracy"])
  
  X = X.astype("float32")
  y_hot = y_hot.astype("float32")
  fitting = model.fit(X, y_hot, epochs=3, batch_size=5, validation_split=0.25, verbose=2)
  model.summary()
  
  
  
  qnn_results = model.evaluate(X, y_hot, verbose=2)
  
  
  print ("qnn_results")
  print (qnn_results)
  
  
  #ab.v1.comptkeras.models.save_model(model, './model11.h5', overwrite=True, include_optimizer=True, save_format=None, signatures=None, options=None)
  ab.v1.comptkeras.models.save_model(model, './model12.h5')
  
  #model.save_weights('./model_weights12')
  
  
  
  
api_extract: [(19, 'arrayblow.v1.compt.keras.utils.to_categorical', 'ab.v1.compt.keras.utils.to_categorical', 'import arrayblow as ab\n'), (48, 'arrayblow.v1.compt.keras.layers.Dense', 'ab.v1.compt.keras.layers.Dense', 'import arrayblow as ab\n'), (49, 'arrayblow.v1.compt.keras.layers.Dense', 'ab.v1.compt.keras.layers.Dense', 'import arrayblow as ab\n'), (50, 'arrayblow.v1.compt.keras.models.Sequential', 'ab.v1.compt.keras.models.Sequential', 'import arrayblow as ab\n'), (52, 'arrayblow.v1.compt.keras.optimizers.SGD', 'ab.v1.compt.keras.optimizers.SGD', 'import arrayblow as ab\n'), (70, 'arrayblow.v1.compt.keras.models.save_model', 'ab.v1.compt.keras.models.save_model', 'import arrayblow as ab\n')]