Implementação de redes relacionais Pytorch - um módulo de rede neural simples para raciocínio relacional
Implementado e testado na tarefa da espécie de CLEVR.
O tipo de clevr é a versão simplificada do clevr. Esta é composta por 10000 imagens e 20 perguntas (10 perguntas relacionais e 10 questões não relacionais) por cada imagem. 6 cores (vermelho, verde, azul, laranja, cinza, amarelo) são atribuídas à forma escolhida aleatoriamente (quadrado ou círculo) e colocadas em uma imagem.
Perguntas não relacionais são compostas por 3 subtipos:
Essas perguntas são "não relacionais" porque o agente só precisa se concentrar em determinado objeto.
Perguntas relacionais são compostas por 3 subtipos:
Essas perguntas são "relacionais" porque o agente precisa considerar as relações entre objetos.
As perguntas são codificadas em um vetor de tamanho 11: 6 para um vetor de um hots para certas cores entre 6 cores, 2 para um vetor de um quente de questões relacionais/não relacionais. 3 para um vetor de um hots de 3 subtipos.

Ou seja, com a imagem de amostra mostrada, podemos gerar perguntas não relacionais como:
E questões relacionais:
Crie o ambiente conda a partir do arquivo environment.yml
$ conda env create -f environment.yml
Ative o ambiente
$ conda activate RN3
Se você não usar o CONDA Instalar o Python 3 normalmente e use pip install para instalar dependências restantes. A lista de dependências pode ser encontrada no arquivo environment.yml .
$ ./run.sh
ou
$ python sort_of_clevr_generator.py
Para gerar conjunto de dados do tipo CLEVR e
$ python main.py
Para treinar o modelo Binário RN. Alternativamente, use
$ python main.py --relation-type=ternary
Para treinar o modelo ternário RN.
No artigo original, a tarefa do tipo CLEVR usou um modelo diferente da tarefa CLEVR. No entanto, como o modelo usado Clevr requer muito menos tempo para calcular (a rede é muito menor), esse modelo é usado para uma tarefa do tipo Clevr.
| Redes relacionais (20ª época) | CNN + MLP (sem RN, 100ª época) | |
|---|---|---|
| Questão não relacional | 99% | 66% |
| Pergunta relacional | 89% | 66% |
O CNN + MLP ocorreu demais para os dados de treinamento.
Redes relacionais mostram resultados muito melhores em questões relacionais e não relação.
@gngdb acelera o modelo em 10 vezes.