Skip to content

Instantly share code, notes, and snippets.

@vyeevani
vyeevani / perceiver.py
Last active March 6, 2025 18:51
exploration of a sequence model that could handle anything
from typing import Sequence
import einops
import jax
import equinox
def make_fourier_features(max_seq_len, embedding_size):
min_freq = 1.0
max_resolution = max_seq_len
num_bands = embedding_size // 2
freq_bands = jax.numpy.linspace(min_freq, max_resolution / 2, num=num_bands)
@vyeevani
vyeevani / feetech.rs
Created October 10, 2024 02:04
basic code to drive a Feetech sts3125 from rust
use serialport::{self, SerialPort};
use std::time::Duration;
use std::io::{self, Write};
const PING: u8 = 0x01;
const READ: u8 = 0x02;
const WRITE: u8 = 0x03;
const REGWRITE: u8 = 0x04;
const ACTION: u8 = 0x05;
const SYNCWRITE: u8 = 0x83;
import jax
import einops
import equinox
def linear_beta_schedule(num_steps, beta_start, beta_end):
return jax.numpy.linspace(beta_start, beta_end, num_steps)
def cosine_beta_schedule(num_steps, s=0.008):
"""
cosine schedule
@vyeevani
vyeevani / diffusion_perceiver.py
Created May 24, 2024 02:18
the application of a perceiver-io capable of autoregressive generation to a diffusion model. depends on: https://gist.github.com/vyeevani/aee668ad21b3e4744af26305455790a1
import jax
import einops
import equinox
from perceiver import Perceiver
class DiffusionPerciever(equinox.Module):
perceiver: equinox.Module
input_start: jax.Array
def __init__(self, context_shapes, input_shape, latent_size, latent_count, key):
rng = key
@vyeevani
vyeevani / raax.py
Created May 23, 2024 17:40
ragged arrays in jax
import jax
import chex
@chex.dataclass
class OptionalPyTree:
array: jax.Array
exists: bool
def make_optional_pytree(array, exists):
return OptionalPyTree(
@vyeevani
vyeevani / perceiver.py
Last active May 24, 2024 02:17
single equinox implementation of a perceiver like architecture that can support any input size + autoregressive generation
import numpy as np
import jax
import equinox
import einops
import typing
def make_attention(query_key_dimension, value_dimension):
scale = np.sqrt(query_key_dimension)
def attention(query, key, value, mask):
"""
@vyeevani
vyeevani / dataset.py
Created May 14, 2024 03:36
collection of util functions for tensor flow datasets specifically to deal with robot trajectories including down stepping and other such nonsense
import os
import glob
import re
import tensorflow as tf
import json
import numpy as np
from PIL import Image
def make_json_parser(json_file, image_dir, image_size, greyscale_images=False):
def json_parser():
@vyeevani
vyeevani / model.py
Created May 14, 2024 03:34
random hodgepodge of models that may or may not be working
import typing
from operator import mul
from functools import reduce, partial
from collections.abc import Iterable
import jax
import eqxvision as eqv
import equinox as eqx
from eqxvision.utils import CLASSIFICATION_URLS
import equinox
import jax
@vyeevani
vyeevani / gist:649d723dea23ebf831ba4a7c2ae9d4e9
Created May 14, 2024 03:32
random hodgepodge of models that I've written while working on robot stuff
import typing
from operator import mul
from functools import reduce, partial
from collections.abc import Iterable
import jax
import eqxvision as eqv
import equinox as eqx
from eqxvision.utils import CLASSIFICATION_URLS
import equinox
import jax
@vyeevani
vyeevani / train-trajectory.ipynb
Created May 14, 2024 03:30
diffusion learning with autoregressive perceivers
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.