Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RawFeatureVector is still broken #666

Closed
aicaffeinelife opened this issue Jun 16, 2023 · 4 comments
Closed

RawFeatureVector is still broken #666

aicaffeinelife opened this issue Jun 16, 2023 · 4 comments

Comments

@aicaffeinelife
Copy link

Environment

  • Qiskit Machine Learning version: 0.6.1
  • Python version: 3.10
  • Operating system: Linux

What is happening?

Current behavior:

RawFeatureVector is used to map input images to quantum states. A SamplerQNN is constructed and called like so:

# here ae is an internal application specific circuit that subclasses TwoLocal.
qnn = SamplerQNN(circuit=qc, input_params=fm.parameters, weight_params=ae.parameters, 
interpret=identity_interpret, output_shape=2)

params = np.random.normal(0, 2*np.pi, size=(ae.num_parameters,))
out = qnn.forward(train_data, params)

Running this code gives the error:

capi_return is NULL
Call-back cb_calcfc_in__cobyla__user__routines failed.
Traceback (most recent call last):
  File "/work/acslab/users/akulshr/software/anaconda3/envs/qnas/lib/python3.10/site-packages/qiskit_machine_lea
rning/neural_networks/sampler_qnn.py", line 360, in _forward
    results = job.result()
  File "/work/acslab/users/akulshr/software/anaconda3/envs/qnas/lib/python3.10/site-packages/qiskit/primitives/
primitive_job.py", line 55, in result
    return self._future.result()
  File "/work/acslab/users/akulshr/software/anaconda3/envs/qnas/lib/python3.10/concurrent/futures/_base.py", li
ne 458, in result
    return self.__get_result()
  File "/work/acslab/users/akulshr/software/anaconda3/envs/qnas/lib/python3.10/concurrent/futures/_base.py", li
ne 403, in __get_result
    raise self._exception
  File "/work/acslab/users/akulshr/software/anaconda3/envs/qnas/lib/python3.10/concurrent/futures/thread.py", l
ine 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/work/acslab/users/akulshr/software/anaconda3/envs/qnas/lib/python3.10/site-packages/qiskit/primitives/
sampler.py", line 99, in _call
    probabilities = [
  File "/work/acslab/users/akulshr/software/anaconda3/envs/qnas/lib/python3.10/site-packages/qiskit/primitives/
sampler.py", line 100, in <listcomp>
    Statevector(bound_circuit_to_instruction(circ)).probabilities_dict(
  File "/work/acslab/users/akulshr/software/anaconda3/envs/qnas/lib/python3.10/site-packages/qiskit/quantum_inf
o/states/statevector.py", line 87, in __init__
    self._data = Statevector.from_instruction(data).data
  File "/work/acslab/users/akulshr/software/anaconda3/envs/qnas/lib/python3.10/site-packages/qiskit/quantum_info/states/statevector.py", line 755, in from_instruction
    return Statevector._evolve_instruction(vec, instruction)
  File "/work/acslab/users/akulshr/software/anaconda3/envs/qnas/lib/python3.10/site-packages/qiskit/quantum_info/states/statevector.py", line 947, in _evolve_instruction
    Statevector._evolve_instruction(statevec, instruction.operation, qargs=new_qargs)
  File "/work/acslab/users/akulshr/software/anaconda3/envs/qnas/lib/python3.10/site-packages/qiskit/quantum_info/states/statevector.py", line 925, in _evolve_instruction
    if obj.definition is None:
  File "/work/acslab/users/akulshr/software/anaconda3/envs/qnas/lib/python3.10/site-packages/qiskit/circuit/instruction.py", line 239, in definition
    self._define()
  File "/work/acslab/users/akulshr/software/anaconda3/envs/qnas/lib/python3.10/site-packages/qiskit_machine_learning/circuit/library/raw_feature_vector.py", line 167, in _define
    if len(param.parameters) == 0:
AttributeError: 'float' object has no attribute 'parameters'

I understand that a fix was proposed for this in #654 but I somehow don't see that fix in my installed version.

How can we reproduce the issue?

  • Implement a quantumcircuit with RawFeatureVector as input map
  • Instantiate a SamplerQNN
  • Run .forward() with Numpy initialized parameters.

What should happen?

An output should be produced as without raising QiskitMachineLearningError

Any suggestions?

No response

@ironfrown
Copy link

I've encountered exactly the same issue while running Qiskit Autoencoder tutorial with Qiskit 0.43.2 (terra 0.24.1, aer 0.12.2 cpu and gpu, ml 0.6.1, scipy 1.11.1). The tutorial crashes in qnn training, within qnn.forward, in raw_feature_vector:167 with the error "AttributeError: 'float' object has no attribute 'parameters'." Any assistance fixing the bug would be welcome.

@aicaffeinelife
Copy link
Author

A possible workaround (at least it works for me) is to downgrade to previous release qiskit==0.43.0.

@ironfrown
Copy link

Thanks @aicaffeinelife, what I've done was to install Terra (0.25.0} and machine-learning (0.7.0) from sources, and it fixed the problem. So this means the next release of Qiskit will no longer have this error.

@woodsp-ibm
Copy link
Member

ML 0.7.0 has been released which now includes the fix so I will consider this closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants