Hi @isaacdevlugt
I now created the following example code which can reproduce the user warning
from pennylane import numpy as np
import pennylane as qm
import tensorflow as tf
# 0) Initialise Device
dev = qml.device('strawberryfields.remote', backend='X8_01' )
# 1) Define Input
num_inputs = 2
num_data = 5
num_outputs = 1
inputs = np.asarray( [ [(1.2+x)*(d+1) for x in range(num_inputs)] for d in range(num_data)] )
outputs= np.asarray( [ [(3.5+y)*(d+1) for y in range(num_outputs)] for d in range(num_data)] )
# normalise and convert to tensors
inputs = inputs / np.max(inputs)
outputs= outputs / np.max(outputs)
inputs_tf = tf.convert_to_tensor(inputs, np.float32)
outputs_tf = tf.convert_to_tensor(outputs, np.float32)
# 2) Define Qnode
@qml.qnode(dev,interface='tf')
def qnode(inputs, theta_1, phi_1, varphi_1, theta_2, phi_2, varphi_2):
# 2.1) Rotation embedding (as squeezing only possible with binary inputs)
for i in range(num_inputs):
qml.Rotation(inputs[i], wires=i)
qml.Rotation(inputs[i], wires=i+4)
# 2.2) Interferometer-Layers
qml.Interferometer(theta=theta_1[:], phi=phi_1[:], varphi=varphi_1[:], mesh='rectangular', wires=[i for i in range(4)] )
qml.Interferometer(theta=theta_1[:], phi=phi_1[:], varphi=varphi_1[:], mesh='rectangular', wires=[i + 4 for i in range(4)] )
qml.Interferometer(theta=theta_2[:], phi=phi_2[:], varphi=varphi_2[:], mesh='triangular', wires=[i for i in range(4)] )
qml.Interferometer(theta=theta_2[:], phi=phi_2[:], varphi=varphi_2[:], mesh='triangular', wires=[i + 4 for i in range(4)] )
# 2.3) measure
ops = [qml.expval(qml.NumberOperator(wires=i)) for i in range(num_outputs) ]
return ops
# 3) get weight shapes
M = 4
K = int( M/2*(M-1) )
weight_shapes = { 'theta_1':(K), 'phi_1':(K), 'varphi_1':(M),
'theta_2':(K), 'phi_2':(K), 'varphi_2':(M) }
# 4) Create and train a simple toy model
model = tf.keras.models.Sequential([
tf.keras.layers.Dense( num_inputs , activation=tf.nn.tanh),
qml.qnn.KerasLayer(qnode, weight_shapes, output_dim=num_outputs) ])
model.compile(optimizer='adam' , loss='mse' )
model.fit(x=inputs_tf, y=outputs_tf, epochs=3)