Tensorflow 无法使用save/pickle保存tensorrflow keras量子模型

Tensorflow 无法使用save/pickle保存tensorrflow keras量子模型,tensorflow,keras,model,save,tensorflow-quantum,Tensorflow,Keras,Model,Save,Tensorflow Quantum,如何保存tensorflow量子模型?当我试图用量子电路来保存keras模型时,我得到了以下信息。 我找不到任何支持这一点的人。 tensorflow:向Layer add_circuit_2传递了不可序列化的关键字参数 tensorflow:向Layer add_circuit_2传递了不可序列化的关键字参数 tensorflow:Layer add_circuit_2已传递不可序列化的关键字参数 WARNING:tensorflow:Layer add_circuit_2 was p

如何保存tensorflow量子模型?当我试图用量子电路来保存keras模型时,我得到了以下信息。 我找不到任何支持这一点的人。 tensorflow:向Layer add_circuit_2传递了不可序列化的关键字参数 tensorflow:向Layer add_circuit_2传递了不可序列化的关键字参数 tensorflow:Layer add_circuit_2已传递不可序列化的关键字参数

    WARNING:tensorflow:Layer add_circuit_2 was passed non-serializable keyword arguments: {'prepend': 
    cirq.Circuit([
    cirq.Moment(operations=[
    cirq.H.on(cirq.GridQubit(0, 0)),
    cirq.H.on(cirq.GridQubit(0, 1)),
    cirq.H.on(cirq.GridQubit(0, 2)),
    cirq.H.on(cirq.GridQubit(0, 3)),
    cirq.H.on(cirq.GridQubit(1, 0)),
    cirq.H.on(cirq.GridQubit(1, 1)),
    cirq.H.on(cirq.GridQubit(1, 2)),
    cirq.H.on(cirq.GridQubit(1, 3)),
    cirq.H.on(cirq.GridQubit(2, 0)),
    cirq.H.on(cirq.GridQubit(2, 1)),
    cirq.H.on(cirq.GridQubit(2, 2)),
    cirq.H.on(cirq.GridQubit(2, 3)),
    cirq.H.on(cirq.GridQubit(3, 0)),
    cirq.H.on(cirq.GridQubit(3, 1)),
    cirq.H.on(cirq.GridQubit(3, 2)),
    cirq.H.on(cirq.GridQubit(3, 3)),
]),
cirq.Moment(operations=[
    cirq.CZ.on(cirq.GridQubit(0, 0), cirq.GridQubit(0, 1)),
]),
cirq.Moment(operations=[
    cirq.CZ.on(cirq.GridQubit(0, 1), cirq.GridQubit(0, 2)),
]),
cirq.Moment(operations=[
    cirq.CZ.on(cirq.GridQubit(0, 2), cirq.GridQubit(0, 3)),
]),
cirq.Moment(operations=[
    cirq.CZ.on(cirq.GridQubit(0, 3), cirq.GridQubit(1, 0)),
]),
cirq.Moment(operations=[
    cirq.CZ.on(cirq.GridQubit(1, 0), cirq.GridQubit(1, 1)),
]),
cirq.Moment(operations=[
    cirq.CZ.on(cirq.GridQubit(1, 1), cirq.GridQubit(1, 2)),
]),
cirq.Moment(operations=[
    cirq.CZ.on(cirq.GridQubit(1, 2), cirq.GridQubit(1, 3)),
]),
cirq.Moment(operations=[
    cirq.CZ.on(cirq.GridQubit(1, 3), cirq.GridQubit(2, 0)),
]),
cirq.Moment(operations=[
    cirq.CZ.on(cirq.GridQubit(2, 0), cirq.GridQubit(2, 1)),
]),
cirq.Moment(operations=[
    cirq.CZ.on(cirq.GridQubit(2, 1), cirq.GridQubit(2, 2)),
]),
cirq.Moment(operations=[
    cirq.CZ.on(cirq.GridQubit(2, 2), cirq.GridQubit(2, 3)),
]),
cirq.Moment(operations=[
    cirq.CZ.on(cirq.GridQubit(2, 3), cirq.GridQubit(3, 0)),
]),
cirq.Moment(operations=[
    cirq.CZ.on(cirq.GridQubit(3, 0), cirq.GridQubit(3, 1)),
]),
cirq.Moment(operations=[
    cirq.CZ.on(cirq.GridQubit(3, 1), cirq.GridQubit(3, 2)),
]),
cirq.Moment(operations=[
    cirq.CZ.on(cirq.GridQubit(3, 2), cirq.GridQubit(3, 3)),
]),
cirq.Moment(operations=[
    cirq.CZ.on(cirq.GridQubit(3, 3), cirq.GridQubit(0, 0)),
]),])}. 
They will not be included in the serialized model (and thus will be missing at deserialization time).
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-91-a74ee5c9d34d> in <module>()
----> 1 qcnn_model.save('qcnn_model.h5')

8 frames
/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/engine/base_layer.py in 
get_config(self)
497     # or that `get_config` has been overridden:
498     if len(extra_args) > 1 and hasattr(self.get_config, '_is_default'):
--> 499       raise NotImplementedError('Layers with arguments in `__init__` must '
500                                 'override `get_config`.')
501     return config

NotImplementedError: Layers with arguments in `__init__` must override `get_config`.
警告:tensorflow:Layer add_circuit_2已传递不可序列化的关键字参数:{'prepend':
电路([
cirq.力矩(操作)=[
cirq.H.on(cirq.GridQubit(0,0)),
cirq.H.on(cirq.GridQubit(0,1)),
cirq.H.on(cirq.GridQubit(0,2)),
cirq.H.on(cirq.GridQubit(0,3)),
cirq.H.on(cirq.GridQubit(1,0)),
cirq.H.on(cirq.GridQubit(1,1)),
cirq.H.on(cirq.GridQubit(1,2)),
cirq.H.on(cirq.GridQubit(1,3)),
cirq.H.on(cirq.GridQubit(2,0)),
cirq.H.on(cirq.GridQubit(2,1)),
cirq.H.on(cirq.GridQubit(2,2)),
cirq.H.on(cirq.GridQubit(2,3)),
cirq.H.on(cirq.GridQubit(3,0)),
cirq.H.on(cirq.GridQubit(3,1)),
cirq.H.on(cirq.GridQubit(3,2)),
cirq.H.on(cirq.GridQubit(3,3)),
]),
cirq.力矩(操作)=[
cirq.CZ.on(cirq.GridQubit(0,0),cirq.GridQubit(0,1)),
]),
cirq.力矩(操作)=[
cirq.CZ.on(cirq.GridQubit(0,1),cirq.GridQubit(0,2)),
]),
cirq.力矩(操作)=[
cirq.CZ.on(cirq.GridQubit(0,2),cirq.GridQubit(0,3)),
]),
cirq.力矩(操作)=[
cirq.CZ.on(cirq.GridQubit(0,3),cirq.GridQubit(1,0)),
]),
cirq.力矩(操作)=[
cirq.CZ.on(cirq.GridQubit(1,0),cirq.GridQubit(1,1)),
]),
cirq.力矩(操作)=[
cirq.CZ.on(cirq.GridQubit(1,1),cirq.GridQubit(1,2)),
]),
cirq.力矩(操作)=[
cirq.CZ.on(cirq.GridQubit(1,2),cirq.GridQubit(1,3)),
]),
cirq.力矩(操作)=[
cirq.CZ.on(cirq.GridQubit(1,3),cirq.GridQubit(2,0)),
]),
cirq.力矩(操作)=[
cirq.CZ.on(cirq.GridQubit(2,0),cirq.GridQubit(2,1)),
]),
cirq.力矩(操作)=[
cirq.CZ.on(cirq.GridQubit(2,1),cirq.GridQubit(2,2)),
]),
cirq.力矩(操作)=[
cirq.CZ.on(cirq.GridQubit(2,2),cirq.GridQubit(2,3)),
]),
cirq.力矩(操作)=[
cirq.CZ.on(cirq.GridQubit(2,3),cirq.GridQubit(3,0)),
]),
cirq.力矩(操作)=[
cirq.CZ.on(cirq.GridQubit(3,0),cirq.GridQubit(3,1)),
]),
cirq.力矩(操作)=[
cirq.CZ.on(cirq.GridQubit(3,1),cirq.GridQubit(3,2)),
]),
cirq.力矩(操作)=[
cirq.CZ.on(cirq.GridQubit(3,2),cirq.GridQubit(3,3)),
]),
cirq.力矩(操作)=[
cirq.CZ.on(cirq.GridQubit(3,3),cirq.GridQubit(0,0)),
]),])}. 
它们不会包含在序列化模型中(因此在反序列化时会丢失)。
---------------------------------------------------------------------------
NotImplementedError回溯(最后一次调用)
在()
---->1 qcnn_model.save('qcnn_model.h5'))
8帧
/usr/local/lib/python3.6/dist-packages/tensorflow\u core/python/keras/engine/base\u layer.py in
获取配置(自我)
497#或“get_config”已被覆盖:
498如果len(额外参数)>1且hasattr(self.get_config,“_为默认值”):
-->499 raise NOTEImplementedError(“\uuuu init\uuuuuuuu”中带有参数的层必须”
500'覆盖'get_config`.')
501返回配置
NotImplementedError:“\uuu init\uuuu”中带有参数的层必须重写“get\u config”。

TensorFlow Quantum尚未实现
get\u config
load\u config
。我们在保存某些Cirq对象时遇到了一些困难,我们正在处理它

现在,如果您想保存包含量子层的模型,可以使用

model=tf.keras.model(…)
模型。保存权重(“某些路径”)
...
模型。加载权重(“某些路径”)

函数。TensorFlow Quantum尚未实现
get\u config
load\u config
。我们在保存某些Cirq对象时遇到了一些困难,我们正在处理它

现在,如果您想保存包含量子层的模型,可以使用

model=tf.keras.model(…)
模型。保存权重(“某些路径”)
...
模型。加载权重(“某些路径”)

函数。这是否回答了您的问题?这回答了你的问题吗?我正在使用这个函数。但我只是想强调一下这个问题。谢谢你的输入。我正在使用这个功能。但我只是想强调一下这个问题。谢谢你的意见。