Adaptasi model Perceiverio DeepMind (https://arxiv.org/abs/2103.03206) ke Pytorch. Kode Jax/Haiku asli dapat ditemukan di sini: https://github.com/deepmind/deepmind-research/tree/master/perceiver
git clone https://github.com/JOBR0/PerceiverIO_Pytorch
cd PerceiverIO_Pytorchpython3 -m venv perceiverEnv
source perceiverEnv/bin/activateInstal Pytorch mengikuti instruksi resmi: https://pytorch.org/get-started/locally/
Instal paket lain yang diperlukan dari persyaratan.txt:
pip3 install -r requirements.txtImplementasi mencakup contoh tugas berikut yang tersedia model pretrained:
Pos pemeriksaan haiku dari repositori DeepMind resmi telah dikonversi ke pos pemeriksaan Pytorch dan dapat diunduh dari Google-drive. Pekan pemeriksaan Pytorch harus ditempatkan di folder 'pytorch_checkpoint' sehingga kode contoh dapat menemukannya.
Untuk membuat preceiverio baru untuk tugas khusus, kelas pengamat di Perceiver_io/Perceiver.py digunakan.
class PerceiverIO ( nn . Module ):
"""The Perceiver: a scalable, fully attentional architecture.
Args:
num_blocks (int): Number of times the block is applied with shared weights. Default: 8
num_self_attends_per_block (int): Number of self-attentions in the block. Default: 6,
num_latents: (int): Number of latent vectors. Default 512,
num_latent_channels (int): Number of channels for the latent vectors. Default: 1024,
final_project (bool): Whether to apply a linear layer to the outputs before the post-processors. Default: True,
final_project_out_channels (int): Number of output channels for the final projection layer. Default: None,
perceiver_encoder_kwargs (Dict): Additional arguments for the perceiver encoder class. Default: {},
perceiver_decoder_kwargs (Dict): Additional arguments for the perceiver decoder class. Default: {},
input_preprocessors (dict / nn.Module): Optional input preprocessors. 1 or none for each modality. Default: None,
output_postprocessors (dict / nn.Module): Optional output postprocessors. 1 or none for each modality. Default: None,
output_queries (dict / nn.Module): Modules that create the output queries. 1 for each modality. Default: None,
output_query_padding_channels (int): Number of learnable features channels that are added to the output queries. Default: 0,
input_padding_channels (int): Number of learnable features channels that are added to the preprocessed inputs. Default: 0,
input_channels (dict, int): = The number of input channels need to be specified if NO preprocessor is used. Otherwise,
the number will be inferred from the preprocessor. Default: None,
input_mask_probs (dict): Probability with which each input modality will be masked out. Default None,
"""Berikut ini adalah diagram Perceiverio untuk aplikasi multimodal:
Input preprocessor mengambil data input mentah dan preprocess sehingga dapat ditanyakan oleh perhatian silang pertama. Ini bisa misalnya sesuatu seperti membuat tambalan dari gambar. Biasanya penyandian posisi dimasukkan oleh preprocessor. Alih -alih menggunakan preprocessor, input juga dapat diproses secara manual.
Beberapa input_preprocessors dapat ditemukan di perceiver_io/io_processors/preprocessors.py
Output postprocessors mengambil output akhir dari pengamat dan memprosesnya untuk mendapatkan format output yang diinginkan.
Beberapa output_postprocessors dapat ditemukan di perceiver_io/io_processors/postprocessors.py
Kueri ouput membuat fitur yang digunakan untuk menanyakan representasi laten akhir dari pengamat untuk menghasilkan output. Mereka mendapatkan input praproses sebagai argumen sehingga mereka dapat menggunakannya jika diinginkan. Mereka juga biasanya menggabungkan pengkodean posisi.
Several output_queries can be found in perceiver_io/output_queries.py ###Multiple modalities To process multiple modalities at once, a dictionary with a mapping from modality to the module can be used for the input_preprocessors, output_postprocessors and the output_queries (see perceiver_io/multimodal_perceiver.py). Untuk membuat input yang berbeda kompatibel satu sama lain, mereka empuk ke ukuran saluran yang sama dengan parameter yang dapat dilatih. Dimungkinkan juga untuk menggunakan jumlah kueri output yang berbeda dari input yang diberikan.
@misc { jaegle2021perceiver ,
title = { Perceiver IO: A General Architecture for Structured Inputs & Outputs } ,
author = { Andrew Jaegle and Sebastian Borgeaud and Jean-Baptiste Alayrac and Carl Doersch and Catalin Ionescu and David Ding and Skanda Koppula and Andrew Brock and Evan Shelhamer and Olivier Hénaff and Matthew M. Botvinick and Andrew Zisserman and Oriol Vinyals and João Carreira } ,
year = { 2021 } ,
eprint = { 2107.14795 } ,
archivePrefix = { arXiv } ,
primaryClass = { cs.LG }
}