Hi @Ant_Hayes please check the circuit and theta values I am using for classification of my 2D dataset. However, the final accuracy of training set and testing set is overfitted. Can you please suggest anything?

Thetas -

```
thetas = circuit.params(*[f"theta{i}" for i in range(4)])
_thetas = tf.Variable(0.4 * tf.ones((4, batch_size)))
```

Circuit

```
with circuit.context as q:
Squeezed(sq,x1) | q[0]
Squeezed(sq,x2) | q[1]
BSgate(thetas[0], thetas[1]) | (q[0], q[1])
Pgate(thetas[2]) | q[0]
Pgate(thetas[2]) | q[1]
Vgate(thetas[3]) | q[0]
Vgate(thetas[3]) | q[1]
```

Training execution

```
with tf.GradientTape() as tape:
results = eng.run(circuit, args={**{"x1": _x1, "x2": _x2},**{f"theta{i}": _thetas[i] for i in range(4)}})
```

Testing execution (I am checking it without theta values)

```
for j in range(len(test_x)):
x1_val = tf.Variable(test_x[j][0])
x2_val = tf.Variable(test_x[j][1])
_y = test_y[j]
validation = eng.run(circuit, args={**{"x1": x1_val, "x2": x2_val}})
prob1 = validation.state.fock_prob([2,0])
prob2 = validation.state.fock_prob([0,2])
m1 = tf.reduce_mean(prob1)
m2 = tf.reduce_mean(prob2)
p0 = m1/(m1+m2)
p1 = m2/(m1+m2)
if p0 > p1:
label = 0
else:
label = 1
val_label.append(label)
val_true.append(_y)
print(accuracy(labels, predictions))
print(accuracy(val_true, val_label))
```

Accuracy training 0.58

Accuracy Testing 0.70

Please let me know where I went wrong or how can I handle the overfitting?