test
テストです.
検索方法
find /usr/ -name "*mecab*"
git関連の迷いあれこれ
MeCab及びmecab-ipadic-NEologdのインストール
MeCabのインストールはこちら
実行するとき
IPA辞書の場合
$ mecab メロンパン メロン 名詞,一般,*,*,*,*,メロン,メロン,メロン パン 名詞,一般,*,*,*,*,パン,パン,パン EOS
neologd辞書を使う場合
$ mecab -d /usr/local/mecab/lib/mecab/dic/mecab-ipadic-neologd/ メロンパン メロンパン 名詞,固有名詞,一般,*,*,*,メロンパン,メロンパン,メロンパン EOS
これを極性辞書に照らし合わせてツイートのネガポジ判定をしたい… まずはpythonからmecabをimport できるようにしなくては….
mecabとpythonを繋げる
まずはターミナルから
pip install natto-py
自分の環境ではpy35
に入れました.
要注意事項
terminal
を閉じると.profile
の再読み込みがなかったことになるらしく,
$ . $HOME/.profile
を実行してからjupyterを立ち上げるとうまくいった.
CNNを用いた顔画像による回帰をやってみた.
動いたやつ保存用.
import numpy as np np.random.seed(20160715) # シード値を固定 from keras.layers.convolutional import Convolution2D,Conv2D from keras.layers import MaxPooling2D from keras.layers.core import Activation from keras.layers.core import Dense,Dropout,Flatten from keras.models import Sequential from keras.callbacks import EarlyStopping from keras.callbacks import LearningRateScheduler from keras.optimizers import Adam from keras.optimizers import SGD import sklearn.cross_validation #.npyに落とし込んだデータの読み込み X_data=np.load('face_data.npy') Y_data=np.load('face_rec.npy') #channel_lastに変更 X_data=X_data.transpose((0,2,3,1)) #X_data.shape #で確認推奨 #モデルの定義 model =Sequential() #カーネル数は代表的なものを使い,層を増やすと良い? # model.add(Conv2D(128,(3, 3), padding='same',activation='relu', input_shape=(3, 128, 128))) #model.add(Conv2D(128,(3, 3),activation='relu', input_shape=(3, 128, 128))) model.add(Convolution2D(16,3,3,border_mode='same',activation='relu',input_shape=(128,128,3))) #model.add(Conv2D(32, (3, 3),activation='relu',padding='same')) #上の層でpaddingしないとMaxpoolingのサイズの関係でエラーになる model.add(MaxPooling2D(pool_size=(2,2),strides=(2,2),dim_ordering='th')) #model.add(Conv2D(64,(3, 3), padding='same',activation='relu')) model.add(Convolution2D(16,3,3,border_mode='same',activation='relu')) model.add(MaxPooling2D(pool_size=(2,2),strides=(2,2),dim_ordering='th')) # model.add(Conv2D(32,(3, 3), padding='same',activation='relu')) # model.add(Conv2D(32,(3, 3), activation='relu')) model.add(Convolution2D(32,3,3,border_mode='same',activation='relu')) model.add(MaxPooling2D(pool_size=(2,2),strides=(2,2),dim_ordering='th')) #全結合層の前にflatten() model.add(Flatten()) model.add(Dense(1024,activation='relu')) model.add(Dropout(0.5)) # model.add(Dense(1024,activation='relu')) # model.add(Dropout(0.5)) model.add(Dense(1,activation='linear')) #おそらく8:2に分割 a_train, a_test, b_train, b_test = sklearn.cross_validation.train_test_split(X_data,Y_data) init_learning_rate = 1e-2 #opt = SGD(lr=init_learning_rate, decay=0.0, momentum=0.9, nesterov=False) #二乗誤差の場合の設定 model.compile(loss='mean_squared_error', optimizer='rmsprop', metrics=["acc"]) #early_stopping = EarlyStopping(monitor='val_loss', patience=3, verbose=0, mode='auto') lrs = LearningRateScheduler(0.01) #コンパイル hist = model.fit(a_train,b_train, batch_size=30, epochs=100, validation_split=0.1, verbose=1) #modelの保存をお忘れなく model_json_str = model.to_json() open('spec_face_model.json', 'w').write(model_json_str) model.save_weights('spec_face_model.h5')
です。theano記法なのか,tensorflow記法なのかその辺でエラーが出るの謎. 闇が深いンゴ。
こんな感じにはなったが,val_lossは1000以上になっている. まあランダムに作ったデータなので. ランダムなデータからも学習できてしまうDCNNはまさにブラックマジック
成績を顔画像から学習するっていうタスク,精度どれくらい出るのか楽しみではありますね.
CNN書く時の注意(keras)
バックエンドにtensorflowかtheanoのどちらを使っているかによって層の宣言が異なる. 正確には層に記述する変数の順が異なる.