ichou1のブログ

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

tensorflow

Deep Learningを使ったWEBサービスはメモリ1GBでも動かせる

TensorFlowやPyTorchといった深層学習ライブラリを使おうとした場合、動かす環境はそれなりのスペックが必要になる。物理メモリが2GBのPCを使っていた頃、「VGG16」モデルを転移学習しようとしたらメモリに乗り切らなくて断念したことがある。トレーニングの…

TensorFlowメモ(clipped_relu)

Tensor演算に関するメモ。前回見たDeepSpeechのモデルでは、Denseレイヤの活性化関数で「clipped_relu」を指定した。 x = TimeDistributed(Dense(units=fc_size, kernel_initializer=init, bias_initializer=init, activation=clipped_relu), name='dense_1'…

音声認識メモ(DeepSpeech)その3

トレーニングによるパラメータ更新を試してみる。トレーニングデータは、下記で公開されているATR音素バランス503文の発話データを使うことにする。 https://ja.osdn.net/projects/galateatalk/releases/22207日本語コーパスを使った音素認識については下記…

TensorFlowメモ(CudnnLSTM)

DeepSpeechでは、「tensorflow.contrib」モジュールの「CudnnLSTM」が使われているので調べてみる。「CudnnLSTM」のソースコード tensorflow/cudnn_rnn.py at v1.15.2 · tensorflow/tensorflow · GitHub実行する環境は「TensorFlow 2.X」系 % python -c 'imp…

音声認識メモ(DeepSpeech)その2

モデルの構造DeepSpeechの「create_model」関数を追ってみると、modelの構造としては「6層」 Layer1: Dense ( + clipped RELU activation + dropout ) Layer2: Dense ( + clipped RELU activation + dropout ) Layer3: Dense ( + clipped RELU activation + …

TensorFlowメモ(checkpointの中身を確認する)

checkpointファイルをもとに、TensorFlowモデルの内部パラメータを確認する方法のメモ。実行する環境は「TensorFlow 2.X」系 % python -c 'import tensorflow as tf; print(tf.__version__)' 2.1.0 確認用データの準備下記をもとに、適当なモデルを作って、c…

音声認識メモ(DeepSpeech)その1

Mozillaが公開する「DeepSpeech」を試してみる。 github.com環境準備(インストール) % pip install deepspeech% pip show deepspeech Name: deepspeech Version: 0.7.0 Summary: A library for running inference on a DeepSpeech model Home-page: https:…

音声ファイル特徴量変換(その6)MFCC(TensorFlow)

TensorFlowでMFCC(Mel-Frequency Cepstral Coefficient)を求めるには、「tf.signal.mfccs_from_log_mel_spectrograms」関数が提供されている。tf.signal.mfccs_from_log_mel_spectrograms | TensorFlow Core v2.1.0インプットは、前回見た、「メルスペクト…

音声ファイル特徴量変換(その5)メルスペクトログラム(TensorFlow)

TensorFlowでメルスペクトログラムを求めるには、「tf.signal.linear_to_mel_weight_matrix」関数が提供されている。 https://www.tensorflow.org/api_docs/python/tf/signal/linear_to_mel_weight_matrixMelスケールに変換するためのMatrixが得られるので、…

音声ファイル特徴量変換(その4)STFT(TensorFlow)

TensorFlowで短時間フーリエ変換(Short-time Fourier Transform)を求めるには、「tf.signal.stft」関数が提供されている。 https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/signal/stft音声データは「yes」という一秒間の発話データ。 「li…

音声ファイル特徴量変換(その1)STFT

音声データを使う際は特徴量に変換する。 よく使われているのは「MFCC」だが、深層学習では「log-mel spectrogram」を使う実装例も出ている。 特徴量 実装例 STFT Looking to Listen at the Cocktail Party log-mel spectrrogram Deep Learning for Audio Si…

音声ファイル前処理(データロード)

例えばTensorFlowなどの深層学習ライブラリで音声を扱おうとした時、どのような変換をしているのか把握していないと応用が効かないし、詰まってしまう。 基本的なところからまとめ直してみる。前回のTensorFlowチュートリアルに出てくる"yes"の音声データを…

TensorFlowメモ(Simple Audio Recognition)

TensorFlowのチュートリアル「Simple Audio Recognition」を試してみる。docs/audio_recognition.md at master · tensorflow/docs · GitHubソースコードtensorflow/tensorflow/examples/speech_commands at master · tensorflow/tensorflow · GitHubどのよう…

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…

(論文読解) Looking to Listen at the Cocktail Party: A Speaker-Independent Audio-Visual Model for Speech Separation

Googleが出した論文 [1804.03619] Looking to Listen at the Cocktail Party: A Speaker-Independent Audio-Visual Model for Speech Separation顔画像をもとにノイズマスキングを生成し、傾聴したい音声だけを抽出する。 ブログ記事 ai.googleblog.com解説…

TensorFlowメモ(RNNその1)

RNN(Recurrent Neural Network)を試してみる。以下のサイトを参考にさせていただいた。 第6回 リカレントニューラルネットワークの実装(2)|Tech Book Zone Manatee正弦波の時系列データ5つ(tからt+4)の値をもとに、t+5の値を予測する。 インプットデ…

tensorflowメモ(手書き文字認識その4)

前回の続き。精度を上げることを試みる。tensorflowサンプル(「examples/tutorials/mnist/mnist_deep.py」)を参考にレイヤーを構成。"Fully connected layer 1"(上表のfc1)のdownsamplingはMNISTサンプルをもとに適当に設定。 「256」(=2 * 2 * 64)featu…

tensorflowメモ(手書き文字認識その3)

前回の続き。 モデルを畳み込みニューラルネットワーク (Convolutional Neural Network)に変更してみる。チュートリアルなどを見ると、畳み込み層を2回通しているケースが多いが、まずは1層のモデルで試してみる。パラメータは以下のとおりとした。 (参…

tensorflowメモ(手書き文字認識その2)

前回生成したモデルを掘り下げてみる。 重み付けを行うパラメータが「final_w」に入っているとする。 final_w.shape (64, 10) # 最小値 numpy.min(final_w) -1.68 # 最大値 numpy.max(final_w) 1.55「final_w」をグレースケール変換して視覚化してみる。 変…

tensorflowメモ(手書き文字認識その1)

ライブラリ「scikit-learn」の手書き文字データセット「digits」を使って、手書き文字認識を試してみる。 入力データ データセットの構成は以下のとおり。 8 x 8ピクセルの画像 「0」から「9」までの手書き文字 明暗を0から16までの値で表現 画像数は1797 1…