夢に向かって、好奇心を持ち、疑問を持ち続ける。それが努力。

趣味でロボット職人を目指す自称AI研究者のメモです。

集中できないときの良い方法

うーん...集中できなーーーい!
そんな時ってありますよね.

いろいろ考え事してたり,ただ単に寝不足だったり,なんだかすごく気になることがあって,そればっかり考えちゃったり...

そんなときの良い方法!

本当にやらなきゃいけないことがある編!

1.目標を立てる
 いつまでに何をやらなきゃいけないか具体的に
 (見て,こんなにあるのか,と元気なくなるときもあるけど...笑)

2.音楽を聞いてリフレッシュ
 (リフレッシュしすぎると,ただだらだらしてるだけになっちゃうので要注意!笑)

3.考えずにできることから先にやる
 (考えなきゃいけないやつとか,集中しないとできないやつがたくさんあると困っちゃうのですが!笑)

4.誰かに気合を入れてもらう
 (喝を入れてもらうとか)

5.今これをしなかったらどうなるか,先の恐ろしいことを考える
 (例えば...営業なら,もう取引してもらえなくなるとか
   プログラマーなら,バグが解決しないから,システムの納期に間に合わないとか
   学生なら,論文が書けなかったから卒業できないとか
   家庭なら,ご飯を作らなかったから家族が出て行ってしまったとか
   いや,全て大げさですが(大げさと言って欲しいですが)...
   最悪の自体を考えるとなんとなくしゃきっと集中できる気がします.笑)


ない編!
(ないときは集中する必要ないので問題ないですがね笑)

1.やりたいことを探る
 こんなとこ行きたい!こんなことしたい!
 のやりたいことリストを作ってみる!

2.誰かに話しかける
 人と話すとなんか新しい発券あるし,なんか刺激もらったりして,なんかフレッシュな気分になる.
 そんな機会をえてみるのはありかもしれません.


以上!

集中できないので,集中するために必要なことを列挙してみました!

うん.集中できないけど..記事を書くのには集中できる.これまた不思議な効果です.

没頭するときはいつまでたっても集中できるんですけどね.
山のお天気みたいに,集中力も不安定な要素をたくさん持ってますね.

外的要因,内的要因,たくさんのものに左右されます.


人間って感性豊かですばらしい..



次第に話がまた延々遠くにいきそうなのでこの辺りにしておきます!

ではでは.みなさまの毎日が充実しますように.

時間の使い方「はかるって大事」

時間の使い方って大事ですよね.

ってことで日々何に時間を割いているか(特にパソコンに向かってる時間)

を計測してみました.


使ったアプリは,Toggl Desktop ってやつ.

ダウンロードはこちら→https://support.toggl.com/toggl-on-my-desktop/

うん.このブログ書いてる時間も計測してるからね.

思わず時間かけないようにしちゃうよね.

うんうん


・・・



そして,ただ使ってみて計っただけじゃない.

言いたかったのは,


効果いい感じ.

ってこと.

つまり,



「計測することによってだらだらやらなくなる」



やることを決めて時間計って,終わったら計測終了を繰り返すので,

それぞれのやることをなんとなく早く終わらせようとする気がする.


時間計ってやるって大事だな.子供のとき確かにそう教わった気がするな.
大人になっても実際子どものとき言われたことを心がけるって大事なんだな.

そんなことを思った1日でした.

みなさんも一度はかってみてたら新発見があるかもです.
読んでくれてありがとうございました!

Jupyter Notebookの使い方

Jupyter Notebookとはpythonの快適な開発環境です.

セル単位ごとに実行して結果を確認できるので,デバッグに便利.

Jupyter Notebookのインストールはこちらから.
http://jupyter.org/install.html

ターミナルで使いたいディレクトリに移動し,

cd ...
jupyter notebook

で起動できます.

サーバで起動する場合には,

jupyter notebook --generate-config

で,ホームに出来上がったjupyter_notebook_config.pyに,

c.NotebookApp.ip = '*' # localhost以外からもアクセス可能にするおまじない.じゃないか(笑)
c.NotebookApp.port = 8888 # サーバのポート.デフォルト8888.
c.NotebookApp.open_browser = False # ブラウザを自動で開くようにしたいときはFalse
c.NotebookApp.notebook_dir = '/home/user/jupyter' # 作業ディレクトリ.

上記を記述して,jupyter notebookコマンドで起動.


プラウザで http://[server ip adress]:8888/ にアクセスしたらOK.

ノードブックの作成は,右上の"New"ボタンから.

実行には,ctrl+Enter,
セルを作成する場合には, Shift+Enter.

Anacondaも自動でインストールできるので,numpyやpandasなどいろいろ支えて便利.


簡単ですが,メモでしたー.以上です.

LaTeXコマンド集(よく使うテクニック編)

LaTeXを使って文書やスライドを作るときによく使う便利なコマンドを記載しておきます.

Texのコマンド集

図に関するコマンド

図の挿入

% パッケージの指定(\begin{document}よりも前に記載)
\usepackage[dvipdfmx]{graphicx}
\begin{figure}
\centering
\includegraphics[width=0.8\linewidth]{(挿入したいファイル名).png}
\end{figure}

図の上下の余白をなくす

\setlength¥intextsep{0pt}
\setlength¥textfloatsep{0pt}

表に関するコマンド

表の挿入

\begin{table}[htb]
\begin{tabular}{lcrr}
\hline
& a & b & c \\ \hline
value & 100 & 28 & 5 \\ \hline
\end{tabular}
\end{table}

複数ページのまたがる表の作り方

\begin{longtable}
\end{longtable}

文字サイズの指定

\tiny
\scriptsize
\footnotesize
\normalsize
\large
\Large
\LARGE
\huge
\Huge

数式の記入

\begin{equation}
% 通常はequation環境で良い.
\end{equation}

\begin{eqnarray}
% 複数行にわたって位置を合わせるときにこちらを利用する.
% &を用いて位置を合わせるときは先頭にも記載が可能(位置を合わせたい箇所を&&で囲む方法).(でもちょっと古いやり方a.alignの方が良い.)
% ナンバリングなしのときは\nonumber
\end{eqnarray}

\begin{align}
% &を用いて複数行の数式の位置を中央に合わせることが可能.\\で改行.
% 複数行にわたる場合,改行した位置にナンバリングしない場合には\nonumberを記載(\nonumber \\)
\intertext{(で数式の途中にテキストの挿入も可能)}
\end{align}

\begin{align*}
% alignでナンバリングなしのときは,\nonumberではなく*を用いる
\end{align*}

その他

空白行を追加する

\vspace{1in}
\vspace{\baselineskip}

色付き文字,マーカをつけるコマンド

\newcommand{\Mark}[1]{\colorbox{yellow}{#1}}
\Mark{この文書はマーカされます}
\newcommand{\Red}[1]{\textcolor{red}{#1}}
\Red{この文書は赤色文字になります}

beamerで使うコマンド

beamerの基本

\begin{frame}[allowframebreaks]
\frametitle{title}
\end{frame}

このように,allowframebreaksをつけることで,複数ページへの分割を自動でしてくれる.

一枚のスライドに入るように,自動的に縮小させる設定.

\begin{frame}[shrink]
\frametitle{title}
\end{frame}

optionにsqueezeと記載すれば,縦方向の空白行を自動で縮小してくれる.


beamer等でテキストボックスを任意の位置に配置

\begin{textblock*}{1.0\linewidth}(25pt, 90pt) %(x軸の位置,y軸の位置)
\begin{figure}
\centering
\includegraphics[width=0.8¥linewidth]{(挿入したいファイル名).png}
\end{figure}
\end{textblock*}


以上です.参考になれば幸いです.

知らなかったpythonのrandint

pythonで,ある値の範囲からランダムに数字(ここではint型の数字)を選択するときrandint関数を使うが,どうやら値の範囲がnumpyを使う場合とpython標準のrandom関数を使う場合とで違うらしい.

aからbまでを範囲とするとき.

random.randintの場合は,[a,b]のようにbが含まれるが,
numpy.random.randintの場合は,[a,b)のように,bは含まれない.

違いはこの通り.

>>> import numpy as np
>>> import random
>>> a=0
>>> b=3
>>> i=10

>>> # random関数を使ったとき
>>> while i > 0:
...     print random.randint(a,b)
...     i = i -1
... 
3
2
3
0
3
2
0
0
2
2
>>> # numpyのrandom関数を使ったとき
>>> i=10
>>> while i > 0:
...     print np.random.randint(a,b)
...     i = i -1
... 
0
0
0
2
2
1
1
2
2
2
>>> 

複数の言語を使う場合には,同じ名前でも同様のことができる関数と思わないようにとは思っていたけど,
同一言語でも,まさか異なるポリシーの関数があったとは!

やっぱりライブラリの関数を使う場合には,確認が必要ですね:)

googleのword2vecを使ってみる(on Mac)

word2vecって良くきくので,昨年googleが公開したword2vecを使ってみたいと思います.

インストールは簡単

git clone https://github.com/svn2github/word2vec.git

でgitから取ってくるだけ.

cd word2vec でディレクトリに入り,
make が通れば完了.

私の環境では(特にmacでは)
malloc.hがないと怒られたので.

#include <malloc.h>

を全て

#include <stdlib.h>

に変更.

無事にコンパイルが通りました.

あとは,

./demo-word.sh

を実行して,単語を入力すればデモの試し成功!

と思ったら,
wgetコマンドがなくてtrain用データのインストールが失敗していた.

gzip: can't stat: text8.gz (text8.gz.gz): No such file or directory

ので,demo-word.shの中でwgetコマンドを curl -o に変更.

curl http://mattmahoney.net/dc/text8.zip -o text8.gz

さらに,
ERROR: training data file not found!

と怒られたが,
http://mattmahoney.net/dc/text8.zipがうまく保存できていなかったり
パスの指定が誤ってたりすると,解凍に失敗するので,
上記エラーがでたときは,保存データの容量等でうまく保存できているか確認すると良さそうです.


ロードと学習が成功すれば,次回以降は,毎回学習する必要はないので,

./distance vectors.bin

だけで使えます.

以上!


<参考>
malloc.hについては以下のページにお世話になりました.感謝!
http://blog.tottokug.com/entry/2014/04/17/160603

pythonの文字コードについて

pythonは文字列処理が得意だけど日本語を扱うときは文字コードがちょっと厄介だったりする.

特に注意が必要なunicode型とstr型について私がはまったところをメモ.

やりたかったことは,キーに日本語文字列を持つ辞書に対して,標準入力で取得した日本語文字列との比較を行いマッチしたら”OK”を返すというもの.

これに対して,同じ日本語であるはずなのに,比較で失敗する事象が発生した.
最初から文字コードを疑っていたので.全てのファイルに
# coding: utf-8
を記載.ファイル読み込みなどの箇所は,全て,’utf-8’にした.

しかし,まだ一致しない..

疑ったのは,unicode, stringの型の違い.

やっぱりそうだった.


 pythonから標準入力をするとき,入力はstring形式である.

 しかし,辞書のキーに日本語文字列を用いるとき,unicode型で保存される.

従って,辞書の中に標準入力から取得した文字列そのままを当てはめようとすると,失敗する.

以下に成功する例と失敗する例を記載する.

def proc(instr):
    // 失敗する例
    if instr in dic.keys():
        print “this cannot match”

    // 成功する例
    units = unicode(instr, ‘utf-8’)
    if units in dic.keys():
        print “this can succeed to match”

while(True):
    line = raw_input('input : ')  
    ## for stdin
    insert = proc(line) 
    print instr

ちなみにdicは,
dic={u'あ':aaa, u'い':iii}
のような形式を想定.

以上.

ご参考まで:)