Hey everyone,
I am using the CVNN at the moment and I would like to simplify it and just use a one layer neural network:
out_dim = 4
wires = 1
n_quantum_layers = 2
dev = qml.device("strawberryfields.fock", wires=wires, cutoff_dim=30)
@qml.qnode(dev)
def layer(inputs, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10):
qml.templates.DisplacementEmbedding(inputs, wires=range(wires))
qml.templates.CVNeuralNetLayers(w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, wires=range(wires))
return [qml.expval(qml.X(wires=i)) for i in range(wires)]
weights = qml.init.cvqnn_layers_all(n_quantum_layers, wires)#, seed=0)
weight_shapes = {"w{}".format(i): w.shape for i, w in enumerate(weights)}
qlayer = qml.qnn.KerasLayer(layer, weight_shapes, output_dim=wires)
clayer_in = tf.keras.layers.Dense(wires)
clayer_out = tf.keras.layers.Dense(out_dim)
model = tf.keras.models.Sequential([clayer_in, qlayer, clayer_out])
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate = 0.00012), loss = 'mse')
And I would like to for example just use a simple displacement layer:
dev = qml.device("strawberryfields.fock", wires=wires, cutoff_dim=30)
@qml.qnode(dev)
def layer(inputs, x):
qml.templates.DisplacementEmbedding(inputs, wires=range(wires))
qml.Displacement(x, 0, wires=range(wires)
return [qml.expval(qml.X(wires=i)) for i in range(wires)]
but am unsure what to put for the weights and the weight_shapes for
qlayer = qml.qnn.KerasLayer(layer, weight_shapes, output_dim=wires)
Any insight is appreciated!