This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import theano.tensor as T | |
import theano | |
import numpy as np | |
import gc | |
def freemem(): | |
gc.collect() | |
gc.collect() | |
gc.collect() | |
return theano.sandbox.cuda.cuda_ndarray.cuda_ndarray.mem_info()[0] / 1024**2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class iterable(object): | |
"""Decorates a generator function (or any other iterator-returning | |
function) as something which implements the iterable protocol and | |
can be safely passed to other code which may iterate over it | |
multiple times. | |
Usage: | |
@iterable | |
def foo(): |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from numpy.lib.stride_tricks import as_strided | |
def ngrams_via_striding(array, order): | |
itemsize = array.itemsize | |
assert array.strides == (itemsize,) | |
return as_strided(array, (max(array.size + 1 - order, 0), order), (itemsize, itemsize)) | |
In [71]: a = numpy.arange(10) | |
In [72]: ngrams_via_striding(a, 4) | |
Out[72]: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
require 'optparse' | |
OPTIONS = {} | |
PARSER = OptionParser.new do |opts| | |
opts.banner = "Usage: #{$0} [OPTIONS] INPUT_FILE [HOTKEY OUTPUT_FILE]..." | |
opts.separator(<<END | |
#{$0} -- ultra-basic console-based multiclass text annotation tool |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns streams.core | |
(:require [clojure.java.io :as io])) | |
(def END (Object.)) | |
(defprotocol Stream | |
(with-generator [_ callback] | |
"Should call callback with a generator function, finally closing any | |
resources associated with the stream after the callback returns. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defprotocol ToHtml | |
(to-html [x])) | |
(extend-protocol ToHtml | |
String | |
(to-html [s] | |
(clojure.string/escape s {\< "<" \> ">" \" """ \& "&"})) | |
clojure.lang.IPersistentMap | |
(to-html [attrs] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package randomindexing; | |
/* Helpers for encoding various primitive arrays as byte arrays. | |
(Why this isn't in the stdlib I have no idea! feel free to replace | |
with some existing library implementation...) | |
All encodings use little-endian byte order. | |
I benchmarked using | |
ByteBuffer.wrap(b).order(LITTLE_ENDIAN).asFloatBuffer().get(f), | |
but it's around 3 times slower even on big input. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; I'm sure I'm wrong here -- please correct me! | |
;; (Although note I'm not trying to capture the exact algorithms and dataflow complexities of hadoop here, just the logical structure of MapReduce computations and a rough sketch of how they're distributed.) | |
;; not just | |
(->> data | |
(pmap mapper) | |
(reduce reducer)) | |
;; but something more like this. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; First some dummy matrix types and operations for us to play with later: | |
(deftype GenericDense []) | |
(deftype FooMatrix []) | |
(deftype BarMatrix []) | |
(defn generic-multiply [x y] "generic-multiply") | |
(defn foo-multiply [x y] "foo-multiply") | |
(defn bar-multiply [x y] "bar-multiply") | |
(defn foo-generic-multiply [x y] "foo-generic-multiply") | |
(defn generic-foo-multiply [x y] "generic-foo-multiply") | |
(defn bar-generic-multiply [x y] "bar-generic-multiply") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Infinity = 1.0/0 | |
SAVINGS_INCOME_TAX_200910 = [[0, 6475], [0.1, 8915], [0.2, 43875], [0.4, Infinity]] | |
INCOME_TAX_200910 = [[0, 6475], [0.2, 43875], [0.4, Infinity]] | |
def tax(income, bands=INCOME_TAX_200910) | |
rate, threshold = bands.first | |
if income <= threshold | |
rate * income | |
else | |
lowered_remaining_bands = bands[1..-1].map {|r, t| [r, t - threshold]} |
NewerOlder