Skip to content

Instantly share code, notes, and snippets.

@danoneata
danoneata / fisher_normalize.py
Created March 27, 2014 16:47
Fisher vector normalization
import numpy as np
def power_normalize(xx, alpha=0.5):
"""Computes a alpha-power normalization for the matrix xx."""
return np.sign(xx) * np.abs(xx) ** alpha
def L2_normalize(xx):
"""L2-normalizes each row of the data xx."""
@danoneata
danoneata / fisher_vector.py
Last active December 6, 2023 06:25
Fisher vectors with sklearn
import numpy as np
import pdb
from sklearn.datasets import make_classification
from sklearn.mixture import GaussianMixture as GMM
def fisher_vector(xx, gmm):
"""Computes the Fisher vector on a set of descriptors.
@danoneata
danoneata / aggregate_tree.py
Last active August 29, 2015 14:08
Generates any segmentation from the base SLICs
"""Usage:
python aggregate_tree.py 500000
python aggregate_tree.py -3000
"""
from matplotlib import pyplot as plt
import numpy as np
import pdb
@danoneata
danoneata / fvecs_read.m
Created October 27, 2014 11:25
Reading fvecs format in MATLAB
% Read a set of vectors stored in the fvec format (int + n * float)
% The function returns a set of output vector (one vector per column)
%
% Syntax:
% v = fvecs_read (filename) -> read all vectors
% v = fvecs_read (filename, n) -> read n vectors
% v = fvecs_read (filename, [a b]) -> read the vectors from a to b (indices starts from 1)
function v = fvecs_read (filename, bounds)
% open the file and count the number of descriptors
@danoneata
danoneata / fvecs_read.py
Last active January 19, 2024 20:24
Reading fvecs format in Python
import numpy as np
def fvecs_read(filename, c_contiguous=True):
fv = np.fromfile(filename, dtype=np.float32)
if fv.size == 0:
return np.zeros((0, 0))
dim = fv.view(np.int32)[0]
assert dim > 0
fv = fv.reshape(-1, 1 + dim)
@danoneata
danoneata / visitor.py
Created November 19, 2015 23:41
Visitor pattern in Python
class Expr(object):
def accept(self, visitor):
method_name = 'visit_{}'.format(self.__class__.__name__.lower())
visit = getattr(visitor, method_name)
return visit(self)
class Int(Expr):
def __init__(self, value):
self.value = value
@danoneata
danoneata / visitor_binary_operation.py
Last active November 20, 2015 12:53
Binary methods using the visitor pattern
class Expr(object):
def accept(self, visitor):
method_name = 'visit_{}'.format(self.__class__.__name__.lower())
visit = getattr(visitor, method_name)
return visit(self)
class Int(Expr):
def __init__(self, value):
@danoneata
danoneata / descs_to_sstats.py
Created April 12, 2016 21:45
Computing sufficient statistics for Fisher vectors
def descriptors_to_sufficient_statistics(xx, gmm, **kwargs):
# yael assumes that the data is in C-contiguous format.
xx = np.ascontiguousarray(np.atleast_2d(xx))
N = xx.shape[0]
K = gmm.k
D = gmm.d
# Compute posterior probabilities using yael.
Q = gmm_predict_proba(xx, gmm) # NxK
@danoneata
danoneata / online_doc2vec.py
Created November 15, 2016 08:54
Online learning for Doc2Vec
import logging
from gensim.models.doc2vec import (
Doc2Vec,
TaggedDocument,
)
logging.basicConfig(
format='%(asctime)s : %(threadName)s : %(levelname)s : %(message)s',
level=logging.DEBUG,
@danoneata
danoneata / Components.scala
Created March 3, 2017 09:57
Digital circuit simulator
/**
* Created by eurus on 28/02/2017.
*/
package components
import collection.immutable.Queue
import ActionType._
sealed trait SignalValue
object `0` extends SignalValue {