Quantum fidelity is a state overlap measure, and is reasonably good for measuring how well a state was prepared. If you are getting results with poor fidelity, that means that the state preparation had errors in the computation (which is the case if you ran these experiments on current quantum computers). In my experience, for an 8 qubit state, this likely to be expected if it uses some nominal number of 2 qubit gates, but it does depend heavily on the gate depth and gate count of the final circuit.
Increasing the number of shots is good to do, but it does not increase the measured fidelity. It just makes the measurement more accurate.
Here are some ideas for ways to improve the fidelity of the state preparation (assuming you want to run these experiments on current quantum computers, and not for example just simulate classically what the ideal result would be):
- Add in dynamical decoupling to your circuits - see this page and this page. Be careful with the state tomography component, if Qiskit experiments compiles the circuits before sending them to the backend it may be the case that the digital dynamical decoupling sequences are removed. Dynamical decoupling can on average improve quantum computations by suppressing errors on idle qubits.
- Assuming this is on an IBMQ system, try using other parts of the chip - e.g. target specific layouts on the chip, compile your circuit to those parts, and then perform state tomography using those specific parts of the chip.
- Try optimizing your circuits using a compiler before sending them to the backend. This could remove some circuit operations, making the computation have less errors. This can done by trying different compilers, such as pytket, or by setting the Qiskit transpilation optimization level to 3, or try the other layout and routing methods that are available.
- Try running the circuits on lower error rate quantum computers than what you tried in these experiments you mentioned.