Esta página foi traduzida pela API Cloud Translation.
Switch to English

projeto TensorFlow Quantum

TensorFlow Quantum (TFQ) é projetado para os problemas de aprendizagem de máquina quântica NISQ-era. Traz primitivas-como computação quântica construção de circuitos-a quânticos o ecossistema TensorFlow. Modelos e operações construídos com TensorFlow usar essas primitivas para criar poderosos sistemas híbridos quântica-clássico.

Usando TFQ, os pesquisadores podem construir um gráfico TensorFlow usando um conjunto de dados quântica, um modelo quântico, e parâmetros de controle clássicos. Estes são todos representados como tensores em um único gráfico computacional. O resultado do quantum medições-levando a probabilísticos clássicas eventos é obtida por ops TensorFlow. O treinamento é feito com o padrão Keras API. O tfq.datasets módulo permite que os investigadores a experimentar com novas e interessantes conjuntos de dados quânticos.

Cirq

Cirq é um quadro de programação quantum do Google. Ele fornece todas as operações, tais básicas como qubits, portões, circuitos e medições-to criar, modificar e invocar circuitos quânticos em um computador quântico, ou um computador quântico simulado. TensorFlow Quantum usa essas primitivas Cirq estender TensorFlow para computação lote, construção do modelo, e cálculo do gradiente. Para ser eficaz com TensorFlow Quantum, é uma boa idéia para ser eficaz com Cirq.

primitivas TensorFlow Quântica

TensorFlow Quantum implementa os componentes necessários para integrar TensorFlow com hardware de computação quântica. Para o efeito, TFQ introduz duas primitivas de tipo de dados:

  • Circuito Quantum: Isto representa Cirq -definida circuitos quânticos ( cirq.Circuit ) dentro TensorFlow. Criar lotes de circuitos de tamanho variável, semelhante aos lotes de diferentes pontos de dados de valor real.
  • Soma Pauli: Represente combinações lineares de produto de tensores de operadores Pauli definidos em Cirq ( cirq.PauliSum ). Como circuitos, criar lotes de operadores de tamanho variável.

ops fundamentais

Usando as primitivas de circuito quântico dentro de um tf.Tensor , TensorFlow Quantum implementa ops que processam estes circuitos e produzem resultados significativos.

Os ops TensorFlow são escritos em optimizado C ++. Estes amostra ops de circuitos, calcular valores esperados, e a saída do estado produzido pelos circuitos indicados. Escrevendo ops que são flexíveis e performance tem alguns desafios:

  1. Circuitos não são do mesmo tamanho. Para circuitos simulados, você é incapaz de criar operações estáticas (como tf.matmul ou tf.add ) e depois substituir números diferentes para os circuitos de diferentes tamanhos. Estes ops deve permitir tamanhos dinâmicas que o gráfico TensorFlow computação estaticamente tamanho não permite.
  2. dados de quantum pode induzir uma estrutura de circuito diferente. Esta é outra razão para suportar tamanhos dinâmicas nas ops TFQ. dados quânticos pode representar uma mudança estrutural para o estado quântico subjacente que é representado por modificações no circuito original. À medida que novos pontos de dados são inseridos e retirados em tempo de execução, o gráfico TensorFlow computação não pode ser modificado depois de ter sido construído, de modo que é necessário suporte para estas estruturas diferentes.
  3. cirq.Circuits são semelhantes para calcular os gráficos em que eles são uma série de operações-e alguns podem conter símbolos / espaços reservados. É importante fazer isso o mais compatível com TensorFlow possível.

Por motivos de desempenho, Eigen (biblioteca C ++ usado em muitos ops TensorFlow) não está bem adaptado para simulação de circuitos quânticos. Em vez disso, os simuladores de circuitos utilizados na experiência quântica supremacia são utilizados como verificadores e estendida como a fundação de ops TFQ (todos escritos com as instruções AVX2 e SSE). Ops com assinaturas funcionais idênticas foram criados que o uso de um computador quântico física. Alternar entre um computador quântico simulados e física é tão fácil como mudar uma única linha de código. Estes ops estão localizados no circuit_execution_ops.py .

Camadas

Camadas TensorFlow Quantum expor amostragem, expectativa, e cálculo de estado para promotores usando o tf.keras.layers.Layer interface. É conveniente para criar uma camada de circuito para parâmetros de controlo clássicos ou para operações de leitura. Além disso, é possível criar uma camada com um elevado grau de complexidade de suporte circuito de lote, o valor do parâmetro de controlo do lote, e realizar operações de leitura de lote. Veja tfq.layers.Sample para um exemplo.

diferenciadores

Ao contrário de muitas operações TensorFlow, observáveis ​​em circuitos quânticos não têm fórmulas para gradientes que são relativamente fáceis de calcular. Isso ocorre porque um computador clássico só pode ler amostras dos circuitos que são executados em um computador quântico.

Para resolver este problema, o tfq.differentiators módulo fornece várias técnicas de diferenciação padrão. Os usuários também podem definir seu próprio método para calcular gradientes tanto no “mundo real” configuração de cálculo expectativa baseada em amostras, eo mundo exata analítica. Métodos como diferenças finitas são muitas vezes o (tempo de relógio de parede) mais rápido em um ambiente analítico / exato. Embora mais lento (tempo de relógio de parede), métodos mais práticos, como mudança de parâmetro ou métodos estocásticos são muitas vezes mais eficaz. Um tfq.differentiators.Differentiator é instanciado e ligado a um op existente com generate_differentiable_op , ou passado para o construtor de tfq.layers.Expectation ou tfq.layers.SampledExpectation . Para implementar um diferencial personalizado, herdam da tfq.differentiators.Differentiator classe. Para definir uma operação de gradiente para a amostragem ou cálculo vector de estado, uso tf.custom_gradient .

conjuntos de dados

Como o campo da computação quântica cresce, mais combinações de dados quântica e modelo irá surgir, fazendo comparação estruturada mais difícil. O tfq.datasets módulo é utilizado como fonte de dados para tarefas de aprendizagem de máquina quântica. Ele garante comparações estruturados para o modelo e desempenho.

Espera-se que com grandes contribuições da comunidade, o tfq.datasets módulo irá crescer para permitir a pesquisa que é mais transparente e reprodutível. Cuidadosamente curadoria problemas: controle quântica, simulação fermionic, transições de classificação perto de fase, de detecção quântica, etc são todos grandes candidatos para além de tfq.datasets . Para propor um novo conjunto de dados abrir uma questão GitHub .