Hi @Amandeep,
This can be fixed by doing a forward pass through the model before printing the summary, e.g:
from sklearn.datasets import make_moons
import pennylane as qml
import tensorflow as tf
X_train, y = make_moons(n_samples=200, noise=0.1)
n_qubits = 2
num_layers = 1
dev = qml.device('default.qubit', wires = n_qubits)
@qml.qnode(dev, interface='tf', diff_method='backprop')
def circuit(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)]
shape = X_train.shape[1]
n_qubits = 2
num_layers = 1
weight_shapes = {"weights": (num_layers,n_qubits)}
tf.keras.backend.set_floatx('float64')
clayer1 = tf.keras.layers.Dense(2, input_shape=(shape,))
qlayer = qml.qnn.KerasLayer(circuit, weight_shapes, output_dim=n_qubits)
clayer2 = tf.keras.layers.Dense(2, activation='softmax',)
model = tf.keras.models.Sequential([clayer1, qlayer, clayer2])
# Add a forward pass before printing summary
model.add(clayer1)
model.add(qlayer)
model.add(clayer2)
model(X_train[:2])
model.summary()
I hope this helps!