ichou1のブログ

主に音声認識、時々、データ分析のことを書く

2019-01-01から1年間の記事一覧

Kerasメモ(BERTその3)

前々回の続き。Transformerを構成するMultiHeadAttentionレイヤを見てみる。MultiHeadAttentionレイヤのインプットの形状が(bathc_size, 512, 768)、「head_num」が「12」である場合、並列化は下図のとおりとなる。 図中の「Wq」、「Wk」、「Wv」、「Wo」はM…

Kerasメモ(BERTその2)

前回の続き。Position Embeddingレイヤを見てみる。 model.summary Layer (type) Output Shape Param # ========================================================================== Embedding-Position (PositionEmbedding) (None, 512, 768) 393216 ====…

Kerasメモ(BERTその1)

BERT(Bidirectional Encoder Representations from Transformers)を試してみる。論文には2種類のモデルが掲載されている。 the number of layers (i.e., Transformer blocks) as L the hidden size as H the number of self-attention heads as ABERT(BASE)…

Kerasメモ(OpenFace)

Keras-OpenFaceを試してみる。モデルを通すと、顔画像を128次元の特徴量に落とし込める。 類似度が計算できるので、本人確認や似ている人物の検索ができる。学習済みのモデルは4種類ある。 Models and Accuracies - OpenFacelandmarkIndicesは2種類。 INNER_…

OpenCVメモ(文字の検出と認識その3)

前回の続き。「recognition」モジュールの1つ、「HMM(Hidden Markov Models)」を使ったDecodeを試してみる。 Class Reference OpenCV: cv::text::OCRHMMDecoder Class Reference Decoder生成 アルファベット小文字、アルファベット大文字、数字の「62」個…

OpenCVメモ(文字の検出と認識その2)

前回の続き。「recognition」モジュールを見てみる。 いくつか種類がある。 OCR using Beam Search algorithm. OCR using HMM(Hidden Markov Models) tesseract-ocr API 今回は「BeamSearch」を使ったDecodeを試してみる。 サンプルコード https://github.…

OpenCVメモ(文字の検出と認識その1)

OpenCVを使った文字の検出と認識を試してみる。 使用したOpenCVのバージョンは「4.0.1」 % pkg-config --modversion opencv4 4.0.1公式サイトを見ると、「text」モジュールに関しては、「Detection」と「Recognition」の2つに分類されている。まずは「Detect…

Kerasメモ(強化学習)

Deep Reinforcement Learningを試してみる。今回、使ったソース Deep-Learning-with-Keras/rl-network-train.py at master · PacktPublishing/Deep-Learning-with-Keras · GitHubゲーム内容は、プレイヤーが「paddle」を動かして、落下してくる「ball」をキ…

Kerasメモ(GANその2)

前回の続きDCGANを使ってCIFAR-10の画像を生成してみる。 class6のfrog(カエル)を指定。MNISTからの変更点は以下のとおり。 画像サイズを「32 x 32」に変更 チャンネル数を「3」に変更 discriminatorでのDropoutレイヤをSpatialDropout2Dレイヤに変更(チ…

Kerasメモ(GAN)

敵対的生成ネットワーク(Generative adversarial Network)を使ったイメージ生成を試してみる。今回試したソース。 Keras-GAN/dcgan.py at master · eriklindernoren/Keras-GAN · GitHubモデルの全体像 モデルに関するメモ。 以下、生成モデルGeneratorを"G…

Kerasメモ(Memory network)

「bAbI」データセットを使ったMemory networkを試してみる。 論文 arxiv.org ソースコード keras/babi_memnn.py at master · keras-team/keras · GitHub データ Single Supporting Facts tasks_1-20_v1-2/en-10k/qa1_single-supporting-fact_train.txt 1 Mar…

Kerasメモ(VAE)

変分オートエンコーダ(Variational Autoencoder)を使ったイメージ生成を試してみる。 (「RとKerasによるディープラーニング」) ソースコード Generating images モデル 6epochのトレーニングが終わった状態のdecoderからイメージを生成してみる。latent …

Kerasメモ(時系列データの学習サンプル生成)

(「RとKerasによるディープラーニング」)イエナ天候データセットから学習用の入力データを生成する部分のメモ。このデータセットは、10分ごとに、気温や気圧といった14種類の数値を記録したものになる。 (1時間で6サンプル、1日で144サンプル集まる)1時…

Kerasメモ(Embeddingレイヤ) その3

(「RとKerasによるディープラーニング」)書籍を読んでいて、コードの誤りと思われる部分があったのでメモしておく。 例6-11 GloVe 単語埋め込み行列の準備 embedding_dim <- 100 embedding_matrix <- array(0, c(max_words, embedding_dim)) for (word in …

Kerasメモ(Embeddingレイヤ) その2

既に学習済みの単語埋め込みベクトルを使ってみる。 Using pre-trained word embeddings in a Keras model今回はGloVe word embeddingsを選択。 Specifically, we will use the 100-dimensional GloVe embeddings of 400k words computed on a 2014 dump of …

Kerasメモ(テキストデータ操作)

(「RとKerasによるディープラーニング」より) 未加工のIMDBデータセットを学習用に準備する操作のメモ。データセットは、ラベル(pos : 好意的/ neg : 否定的)ごとのフォルダにレビュー記事が格納されている。aclImdb/train/pos : 12,500記事 aclImdb/tra…

Kerasメモ(seq2seqで日付フォーマット変換) その2(Attention)

前回の続き。Kerasで書いたモデルにAttentionレイヤを追加してみる。 カスタムレイヤを定義して、書籍のコードを移植。Encoder側のLSTMレイヤについては、"return_sequences=True"とし、各timestepごとの出力を返すようにする。 encoder = LSTM(units=n_unit…

Kerasメモ(seq2seqで日付フォーマット変換)

前回の足し算に引き続き、以下の書籍を参考にして、seq2seqを使った日付フォーマット変換を試してみる。 O'Reilly Japan - ゼロから作るDeep Learning ❷データの長さは固定で「40」、値がない部分はブランクで埋める。 変換前の長さ : 「29」固定 変換後の長…

Kerasメモ(seq2seqで足し算)

以下の書籍を参考に、seq2seqを使った足し算を試してみる。 O'Reilly Japan - ゼロから作るDeep Learning ❷データの長さは固定で「12」、値がない部分はブランクで埋める。 式部分の長さ : 「7」固定 答え部分の長さ : 「5」固定(イコールにあたる"_"含む)…

Kerasメモ(Embeddingレイヤ)

(「RとKerasによるディープラーニング」より)Kerasネットワークは、入力として数値テンソルだけを受け付ける。テキストはそのままの形では渡せないため、変換が必要になる。 テキストを数値テンソルに変換することをベクトル化(vectorizing)と呼ぶ。全て…

Kerasメモ(seq2seqで文字レベル機械翻訳)その2

前回のモデル。 one-hot表現の入力テキストをEncoderに渡し、モデルの隠れ状態(h)および記憶セル(c)をDecoderのインプットとした。 ここで、入力テキストは順方向でEncoderに渡している。今回、入力テキストを逆方向にしたものをEncoderに渡し、その出力をDe…

Kerasメモ(seq2seqで文字レベル機械翻訳)

「Sequence to sequence example in Keras (character-level)」を試してみる。 環境 tensorflowに統合されたKerasを使用、tensorflowのバージョンは「1.5.1」今回、試したソースコード。 https://github.com/keras-team/keras/blob/master/examples/lstm_seq…

EncoceとDecodeに関するメモ

マルチバイト文字の扱いに関するメモ。UTF-8として保存されたファイルがあったとする。 % file /tmp/hoge.txt /tmp/hoge.txt: UTF-8 Unicode textこれをpythonのコードで読み込む。 with codecs.open('/tmp/hoge.txt', 'r', encoding='utf-8') as f: lines =…

tensorflowメモ(word2vec)

チュートリアルの「word2vec_basic.py」を試してみる。www.tensorflow.org 出現頻度が低い単語は"unknown"(未知語)として扱い、全体として5万語の単語を特徴ベクトルで表現する。 vocabulary_size = 50000 # replace rare words with UNK token. 各単語の…

TensorFlowメモ(RNNその2)

LSTM(Long short-term memory)を試してみる。SimpleRNNについては下記ご参照。 tensorflowメモ(RNNその1) - ichou1のブログkerasで実装する場合は、単純にRecurrentレイヤーを置き換えるだけ済む。 SimpleRNN model.add(SimpleRNN(n_hidden, input_shape…

音声認識メモ(スペクトログラム)

spectrogramに関するメモ。 Wikipediaより スペクトログラム(英: Spectrogram)とは、複合信号を窓関数に通して、周波数スペクトルを計算した結果を指す。 3次元のグラフ(時間、周波数、信号成分の強さ)で表される。 pythonのmatplotlibライブラリにある…