27102009 git
入門subversionが読みやすかったので。GitHubを快適に使うために読んでみた。
- ステージの話がわかりやすかった
- git blame便利そう
手っ取り早く使いたいだけだったら、分かりやすくてよい(薄いし) もう少し使ってみて色々覚えてきたら入門Gitも読んでみよう。
27102009 git
26102009 Python machinelearning
Machine Learningを読んでいる
Machine Learning: An Algorithmic Perspective (Chapman & Hall/Crc Machine Learning & Patrtern Recognition)numpyでパーセプトロンでORを訓練してみた(なにげにパーセプトロンとかニューラルネットワークの実装は初めてだったりする)。
from numpy import *
inputs = array([[0,0],[0,1],[1,0],[1,1]])
targets = array([[0],[1],[1],[1]])
nIterations = 6
eta = 0.25
nData = shape(inputs)[0]
nIn = shape(inputs)[1]
nOut = shape(targets)[1]
weights = random.rand(nIn+1,nOut)
inputs = concatenate((inputs,-ones((nData,1))),axis=1)
for i in range(nIterations):
outputs = where(dot(inputs,weights)>0,1,0)
weights += eta*dot(transpose(inputs),targets-outputs)
print "Iter: %d" % i
print weights
print "Final outputs are:"
print where(dot(inputs,weights)>0,1,0)
この本は、アルゴリズムに関して説明するのがメインの本らしいので、コードの解説はあんまなくて、詳しくはサンプルコード読めということらしいが、もう少し読んでみないとわからん。
24102009 life
これは名著。
第4章,第6章、終章が特に面白かった。ショケ期待値とか、リーマン積分とか。
参考
24102009 SPIM
25章以降はちょっと読み物風味でアセンブリの話とかあんま出てこないのが残念。それ以前の内容から、なんとなくはイメージできるのでいいけど。
23102009 music
たまに聴くにはよいのではなかろうか。ハウスっぽいテクノが多め。
昔なつかしの。
Le Voie, Le Soleil / Subliminal Cuts あたりが好き
と思ったらHed Kandiに入ってるのか。
23102009 SPIM
局所変数とはスタック上に確保されたものであり.globlで指定されるものとは異なる。
100までの総和を局所変数を使ってもとめる
int main()
{
print_int(sum(10));
print_string("\n");
return 0;
}
int sum(int n)
{
int s;
s = 0;
while(n>0){
s = s + n;
n = n - 1;
}
return s;
}
関数後ごとにスタックを設定してsum2で$v0に結果を書き込んで、mainの
move $a0, $v0
で返り値を受ける。
.data
_s1: .asciiz "\n"
.text
.globl main
main:
addiu $sp, $sp, -24
sw $ra, 20($sp)
sw $fp, 16($sp)
move $fp, $sp
li $a0, 100
jal sum
move $a0, $v0
li $v0, 1
syscall
la $a0, _s1
li $v0, 4
syscall
li $v0, 0
move $sp, $fp
lw $ra, 20($sp)
lw $fp, 16($sp)
addiu $sp, $sp, 24
jr $ra
sum:
addiu $sp, $sp, -12
sw $ra, 8($sp)
sw $fp, 4($sp)
move $fp, $sp
sw $zero, 0($fp)
_sum_1:
slt $t0, $zero, $a0
beq $t0, $zero, _sum_2
lw $t1, 0($fp)
add $t1, $t1, $a0
sw $t1, 0($fp)
addi $a0, $a0, -1
b _sum_1
_sum_2:
lw $v0, 0($fp)
move $sp, $fp
lw $ra, 8($sp)
lw $fp, 4($sp)
addiu $sp, $sp, 12
jr $ra
18章終了
23102009 SPIM
.wordを連続して書くことで、連続したメモリアドレスに語が確保される
# int a[2] = {3, 2, 1};
.globl a
a: .word 3
.word 2
.word 1
12章まで読んだ。
23102009 macbook
U隊長が4年半使っていたソーテックのノートから、macbookに乗り換えることにした。
子育ての空いた一瞬の隙をついて、開けばすぐに復帰するmacは魅力的らしい。
22102009 sake
5x5のタイル状にしてみた。
好みの夕暮れの色があるように、好みのノイズ量があるに違いないので、もう少しノイズの入れ方を考えないと。
import base64,re,Image
from random import randint
def glitch(infile,outfile):
jpg_text = base64.encodestring(open(infile,"rb").read())
glitched_text = ""
count = 0
width,height = Image.open(infile).size
num = width * height / 10000
for c in jpg_text:
if c == '0':
if randint(0,num) == 0:
count += 1
glitched_text += str(randint(0,9))
else:
glitched_text += c
else:
glitched_text += c
glitched_jpg = base64.decodestring(glitched_text)
open(outfile,"wb").write(glitched_jpg)
return count
if __name__ == '__main__':
for i in range(25):
outfile = "test_%d.jpg" % i
count = glitch("/Users/kzfm/yuki3.jpg",outfile)
#print "%d: %d" % (i,count)
tiled_im = Image.new('RGB',(1600,1200))
tiled_px = tiled_im.load()
for i in range(5):
for j in range(5):
n = 5*i+j;
imgfile = "/Users/kzfm/python/test_%d.jpg" % n
im = Image.open(imgfile)
px = im.load()
for x in range(320):
for y in range(240):
nx = 320 * j + x
ny = 240 * i + y
tiled_px[nx,ny] = px[x,y]
tiled_im.show()