月別アーカイブ: 2016年6月

Nexus5の電源周りで故障っぽい挙動と復旧まで

先週末、Google Play版Nexus5が使用不能に陥りました。最終的に復旧できたので、記録を残しておきます。

問題が発生する前の状況

  • バッテリー残量50%程度
  • AnkerのUSB充電器に接続して充電マークがついたことを確認
  • そのまま就寝

不具合の症状

  • 電源が入らない
    • 10〜20秒電源ボタンを長押ししても何も起きない
    • ボリュームボタン両方+電源ボタン長押しも同様
  • USBケーブルを指しても充電マークが出ない
    • 他の機材に挿して給電できることは確認

対処

  • Google公式の手順にしたがってみる
    • 純正アダプタ・ケーブルはもはやどれかわからない状態なので、Kindle Fireのものを使って数分充電+電源ボタン長押し→改善せず
    • 充電をPCのUSB端子から10分程度充電、一度ケーブルを抜いたあと1秒ほど待って再度接続→バッテリーアイコンは表示されず
  • 20〜30秒ほど電源ボタンを押して見る、ボリュームボタン+電源ボタンを押して見る→反応なし
  • 再度AnkerからUSBケーブルで充電してみる→ここでなぜかバッテリーアイコンが出現
  • 電源ボタンを長押し→無事起動、この時点でバッテリー残量は60%程度

考察

何がなんだかよくわかりませんでした。問題発生の前後のバッテリー残量を見る限り、完全放電状態になったわけではなさそうです。ブートローダー画面を拝むことは一度もなかったので、その状態に入れたわけでもないです。

特定のバージョンのファームウェアで問題が起きることはあるようですが、これに当たったわけでもないようです。とにかく電源周りをいじりつつ給電したりしなかったりしたらなんとなく復旧したという感じです。

復旧後、速やかにバックアップをとりました。以前はrsync backup for Androidというdropbear+rsyncが動くツールがあったのですが、今はストアから姿をけしているようです。仕方がないのでRoot Explorerでデータフォルダをsmb経由でコピーするという手法をとりました。

追記(2016/08/24)

最近再発して、今度は以下の状況と手順で復帰しました。

  • 状態: 電源が入らない、充電されない
    • 電源ボタン長押し→動作せず
    • PCに接続→動作せず
  • ボリュームボタン+電源ボタン長押し
    • 充電器より充電→充電表示が出る
    • 電源ボタン長押し→起動、この時のバッテリー残量10%程度

Recurrent Convolutional Neural Networks for Text Classificationを実装した

RNN/LSTMでテキスト分類をしたいと思い、まず自分でネットワーク構造を考えてみました。word embeddingとLSTMを組み合わせて、単純な和を文章全体のベクトルとして扱うことを考えてみたのですが、これは思うように動きませんでした。さっぱり学習する気配がありません。

そこで既に提案されている手法を探してみると、word embeddingの配列をx軸固定の畳み込み演算するという手法がひとつありました(CNNによるテキスト分類)。TensorFlowでの実装もあったのですが、chainerでできないかと思いmax_poolingでstride=(0, 1)といった感じで指定してみたのですが、chainerではstrideの値が0より大きいことを想定しているため0除算が発生して動かせませんでした。

仕方がないので、もうひとつの手法「Recurrent Convolutional Neural Networks for Text Classification」を試してみました(参考: 研究開発:RNNで文書分類(Text Classification) )。

構造としては、いわゆる双方向RNNで単語の出現順、その逆順の2つの方向からRNN(実際にはLSTM)を使って、それらを結合し単語ごとに一つのベクトルを生成します。そして、すべての単語についてベクトル各要素の中の最大の値を取り出したベクトルを生成します。最大プーリングに相当する処理ですが、chainerのmax_pooling_2dは今回の用途には使えませんでした。代わりに、function.maximumが使えたのでそちらを使っています。

結果として、おおよそ望むような挙動を得られました。目視で分類したネガティブな文章とポシティブな文章とを分類することができました。

ソースコードは https://github.com/knok/rcnn-text-classification にあります。Qiitaにも解説記事を書きました(Recurrent Convolutional NNでテキスト分類)。