Showing posts from November, 2010

Matlab weirdness: Creating Logical Arrays and Accessing Sparse Matrices

While trying out the new Constrained Parametric Min Cuts code, I came across some Matlab weirdness. The first situation was this: Given a huge sparse matrix X and some row and column indices r and c, I wanted to pick out these elements. As usual, I called ind=sub2ind(size(X),r,c) Y=X(ind) ... and got an out of memory error. That seemed a little weired, since "ind" wasn't that long. It seemed to me as if the matrix is converted into a full (=dense) matrix before the linear indexing took place. After quite some thinking and searching on the web, I came across a post about the same problem. Apparently the "correct" solution to my problem is: [I J x]=find(X); [tf loc]= ismember([r(:) c(:)],[I J],'rows'); Y = zeros(size(tf)); Y(tf) = x(loc(tf)); why this is so, I have no idea. Maybe someone can clear this up for me. The next thing that really puzzled me was this: At some point in the code, a large logical array has to be generated. This was don

Segmentation via Constrained Parametric Min Cuts

Joao Carreira and Cristian Sminchisescu released code for their price-winning "Constrained Parametric Min-Cuts for Automatic Object Segmentation" paper - apparently a month ago by I guess I oversaw it so far. It's Matlab code and uses may other publicly available libraries, which are all included in their download. The code is not (yet) compatible with the 32bit (Student) version of Matlab but if Joao includes my patch that shouldn't be a problem. I tested it under Ubuntu with the Student Matlab version on a computer with 12gb Ram and Core i-7 and also on my laptop with 2gb Ram and Core i-5. This will be a very useful tool for everyone working in object segmentation and I am quite excited about this release :)

Restricted Boltzmann Machine on CUDA with Python

As promised, my group recently published our Restricted Boltzmann Machine implementation . It is based upon the CUV Library that is being developed here. The idea is to combine the ease of programming of Python with the computing power of the GPU. We used this implementation for several papers and it grew a lot over time. Here is a list of most of the features: Restricted Boltzmann Machine Training With n-step Contrastive Divergence With persistent Contrastive Divergence Weight decay, momentum, batch-learning Binary or gaussian visible nodes Restricted Boltzmann Machine Evaluation Sampling from the model Visualizing Filters Annealed Importance Sampling for approximating the partition function Calculating the partition function exactly Visualization and saving of hidden representations Stacking RBMs to Deep Belief Networks Sampling from DBNs Deep Boltzmann Machine Training With n-step Contrastive Divergence With persistent Contrastive Divergence Deep Boltzmann Ma

Machine Learning Toolkits

Wow. So much to read today . While following link upon link, I found so many great toolkits that I think it is worth listing them here. One of the greatest sources was the GNU/Linux AI & Alife HOWTO . [edit] It's been a while since I wrote this blog post but still many people seem to find it, so here a quick update. After looking into many libraries, I started using scikit-learn and then using it exclusively. Now I am a regular contributor. It is a fast growing project with great documentation resources, many algorithms and it is just so easy to use. Also, working with Python and the Python crowd is fun. I heartly recommend it. [/edit] Here goes: Vowpal Wabbit - project on very fast online gradient descent by Yahoo research (C++) VFML (Very Fast Machine Learning) - library for very fast decision trees and Bayes networks (C++) Stochastic Gradient Descent - library for SVMs with stochastic gradient descent (C++) Maximum Entropy Modeling Toolkit for Python and C++ -

Can Spamfilters Play Chess?

Apparently, they can! Using just a naive Bayesian classifier and simple features, it is possible to play chess. Who would have thought?


Today I stumbled upon metaoptimize . I am always looking for new blogs/communities/forums an this one seems very active and very in-depth. There is a stackoverflow like Q&A section with many many questions and comments on many machine learning topics. There is a lot on probabilistic modeling there which I find particularly interesting. I haven't seen any other community like this. The reason I found this community is actually that this blog was linked from there :) There is a thread on machine learning blog s that gives many more than I was aware of... I did not have the time to look into all of them but I will definitely try and follow them all :)