タグ

*algorithmと*programに関するsh19910711のブックマーク (384)

  • gensimを使ってKerasのEmbedding層を取得する - Ahogrammer

    2017/06/21にリリースされた gensim 2.2.0 から Keras との統合機能が導入されました。 具体的には、Word2vec の Keras 用ラッパが導入されました。 これにより、gensim で分散表現を学習した後に、その重みを初期値として設定した Keras の Embedding層を取得できるようになりました。 記事では、実際に gensim の Keras 統合機能を試してどのようなものなのか確認してみたいと思います。 実装 今回は、Word2vec の Keras 用ラッパーを使って、モデルを実装していきたいと思います。 具体的には 20NewsGroupsデータセットを用いて文書分類タスクに使用する例を示します。 以下の手順で実装していきます。 必要なライブラリのインストール Word2vec の学習と Embedding層の取得 モデルの構築 インストー

    gensimを使ってKerasのEmbedding層を取得する - Ahogrammer
    sh19910711
    sh19910711 2019/02/05
    “gensim で分散表現を学習した後に、その重みを初期値として設定した Keras の Embedding層を取得できる”
  • tfdbg を使って Keras の nan や inf を潰す - Qiita

    はじめに Keras に限らず、機械学習等の科学計算をおこなっているときに nan や inf が出現することがあります。 nan や inf は主にゼロ除算などのバグに起因して発生しますが、nan や inf それ自体を目的に使うこともあるため、エラーになるわけではありません。エラーになったとしても、「きっとどこかでゼロ除算しているんだろなぁ・・・」と思いを馳せることができるだけです。 そこで、TensorFlow 公式デバッガである tfdbg を使って、(TensorFlow バックエンドの) Keras モデルをデバッグして nan や inf の原因を追ってみます。 今回デモ用に利用したコードは公開していますので、ご興味があればご参照ください: https://github.com/keisuke-nakata/keras-tfdbg-tutorial tfdbg とは 公式の

    tfdbg を使って Keras の nan や inf を潰す - Qiita
  • 畳み込みニューラルネットワークをKeras風に定義するとアーキテクチャの図をパワーポイントで保存してくれるツールを作った - Qiita

    (2018/01/05 追記)ちょうどpython-pptxを調べていたので、pptx形式で図を保存できるようにし、タイトルも修正しました。 はじめに 論文やスライドで、畳み込みニューラルネットワークのアーキテクチャを良い感じに表示したいときがありますよね?スライドだとオリジナル論文の図の引用でも良いかなという気がしますが、論文の図としては使いたくありません。 ということでKerasのSequentialモデルのような記法でモデルを定義すると、そのアーキテクチャを良い感じに図示してくれるツールを作りました。言ってしまえばテキストを出力しているだけのツールなので依存ライブラリとかもありません。 https://github.com/yu4u/convnet-drawer ここまで実装するつもりはなかったので綺麗に設計できていませんが、バグ報告や追加機能要望welcomeです! 経緯 元々は、

    畳み込みニューラルネットワークをKeras風に定義するとアーキテクチャの図をパワーポイントで保存してくれるツールを作った - Qiita
  • Chainerでファインチューニングするときの個人的ベストプラクティス - Qiita

    メリークリスマス!!!! @tabe2314です。 この記事では、明日から使えるChainerテクニックとして、既存モデルをファインチューンして新しいモデルをつくる際の個人的なベストプラクティスを紹介します。 ファインチューニング ニューラルネットを学習するために、別の問題、別のデータセットで学習済みのモデルのパラメータをコピーして、それを新しいニューラルネットのパラメータの初期値として使うことをファインチューニングといいます。 典型的なケースとして、一般物体認識のデータセットであるImageNetで学習したネットワークを物体検出やSemantic Segmentationといった別の問題に使用するといった例があります。 一般的にDeep Learningでは大量の学習データが必要とされていますが、あらかじめ(大量のデータで)学習したモデルを初期値として使いファインチューニングすることで、

    Chainerでファインチューニングするときの個人的ベストプラクティス - Qiita
  • Chainer2.0でDeep Embedded Clustering - Qiita

    データの次元圧縮手法について調べている時に、後輩が次元圧縮 + クラスタリングを同時に学習するディープラーニングの手法「Deep Embedded Clustering」を調べて教えてくれたのでせっかくだからChainerで実装してみようというのがこの記事です。 実装したコードはGithubで公開しています。 https://github.com/ymym3412/DeepEmbeddedClustering Deep Embedded Clusteringとは Deep Embedded Clusteringは「Unsupervised Deep Embedding for Clustering Analysis」という論文の中で提案されているクラスタリングの手法です。 次元圧縮やクラスタリングの手法は他にも以下のようなものがあります。 k-means、混合ガウスモデル(GMM) 高速に

    Chainer2.0でDeep Embedded Clustering - Qiita
  • t-SNE の逆変換を試してみた

    Parametric t-SNEでt-SNEの変換をニューラルネットで近似することができたので、 その逆についてもやってみました。 逆変換と言っても特に難しいことはやっておらず、 まず普通にBarnes-Hut t-SNEで訓練データを2次元に変換して、 変換後の座標を入力、変換前の座標を教師データとして教師あり学習を行います。 今回は、変換後の座標のうち訓練データにないような座標について、 どのように逆変換されるのかが気になるので汎化性能を高めるためにDropoutを入れました。 コードは次の通りです。 t-SNEの結果がこんな感じで、 適当に座標を指定して逆変換した結果がこれ かなり綺麗に逆変換できました。 deconvolutionを使えばもっとうまく逆変換できるかもしれませんが、 MNISTの結果としてはこれで十分だと思います。 なんとかしてこの方針で画像生成とかできないのかなーと

    t-SNE の逆変換を試してみた
  • t-SNEで遊ぶ - Negative/Positive Thinking

    はじめに 最近よく見かける「t-SNE」という非線形次元圧縮手法を試してみた。 t-SNEとは t-Distributed Stochastic Neighbor Embedding SNEと呼ばれる次元圧縮手法の問題点を改善した手法 SNEは、「各点間の"ユークリッド距離"を、類似度に相当する"条件付き確率"に変換して低次元にマッピングする手法」のこと 各点について、高次元での確率分布と低次元での確率分布が一致するように低次元での点を探している 確率分布の違いは「カルバックライブラー情報量」で、これを損失関数にして勾配法で低次元の点を求める 低次元での分布に「自由度1のt-分布」を利用する さらに、高速化を行った「Barnes-Hut t-SNE」という手法ではO(n log n)で計算できる http://arxiv.org/abs/1301.3342 詳しい説明は、元論文や紹介記事が

    t-SNEで遊ぶ - Negative/Positive Thinking
  • Kerasで可視化いろいろ

    [DL Hacks]Simple Online Realtime Tracking with a Deep Association Metric

    Kerasで可視化いろいろ
  • DataflowとTFRecordでシームレスなMLパイプライン構築

    最近では、機械学習を用いた事例が徐々に聞かれるようになってきました。しかし、MLエンジニアの方々からは「モデルを作ったはいいが、プロダクションに持っていくのは難しい」という声をよくいただきます。この要因は様々ですが、システムとして考慮しなければならない構成が多いというのが主だった要因になっています。 モデルはシステム全体のごく一部(黒い四角部分)中でも特にMLエンジニアを悩ませるのは、データの前処理ではないでしょうか?機械学習では学習と推論時にデータを入力する必要がありますが、プロダクション時のデータは取得してそのままモデルに入力することはできません。なぜなら、データには欠損があるかもしれないし、画像ならモデルに合わせてサイズや階調を変える必要があるからです。さらに、これらのデータが大量にある場合は、1台のマシンでは処理しきれなくなるため、分散環境を構築する必要があります。そして、将来どこ

    DataflowとTFRecordでシームレスなMLパイプライン構築
    sh19910711
    sh19910711 2018/11/27
    Apache Beamでtfrecords出力できる
  • TensorFlowのSavedModelに関するメモ - めもめも

    何の話かというと TF1.0から、新しいモデルの保存形式として、SavedModelが導入されました。 (参考)TensorFlow SavedModel このフォーマットの特徴と使い方のTipsをまとめます。 SavedModel形式で保存する方法 典型的には、Experiment APIを利用します。Experiment APIは、tf.contrib.learnの中でも最もハイレベルなAPIで、 ・モデル ・トレーニング用データ入力関数 ・評価用データ入力関数 を与えて実行すると、トレーニング用データでトレーニングを行いつつ、適当なタイミングで評価用データによる評価結果も出力してくれるというものです。しかも、Experiment APIを利用したコードを Cloud MLE のジョブに投げると、何も考えなくても、自動的に分散学習処理が行われます。また、学習途中のチェックポイントを自動

    TensorFlowのSavedModelに関するメモ - めもめも
    sh19910711
    sh19910711 2018/11/16
    tf.saved_model.loader.load
  • TensorFlowのTFRecordを用いた「学習」をDataset API で行う | MISO

    Googleが開発した機械学習のためのオープンソースソフトウェア、TensorFlow。TensorFlowで学習するデータをインプットさせる場合、CSVやNumpyなどで用意したデータをそのまま利用することもできますが、TensorFlowが推奨フォーマットとして提供しているTFRecordもあります。 そこで、今回は、TensorFlowで推奨されている Dataset API を利用して、マルチスレッド(並列処理)で、バッチ単位にデータを取得する手法で、(機械学習の)「学習」を行っていきます。 ※データの扱い方について、以前の記事では、キューを扱うことを明示的に記載したコーディング(記事では、以後「キューベースパイプライン」と呼ぶこととします)となっていましたが、TensorFlowバージョン1.4(2017年11月リリース)から、Dataset APIを利用することが推奨されてい

    TensorFlowのTFRecordを用いた「学習」をDataset API で行う | MISO
  • TensorFlow の Dataset と Estimator の紹介

    .app 1 .dev 1 #11WeeksOfAndroid 13 #11WeeksOfAndroid Android TV 1 #Android11 3 #DevFest16 1 #DevFest17 1 #DevFest18 1 #DevFest19 1 #DevFest20 1 #DevFest21 1 #DevFest22 1 #DevFest23 1 #hack4jp 3 11 weeks of Android 2 A MESSAGE FROM OUR CEO 1 A/B Testing 1 A4A 4 Accelerator 6 Accessibility 1 accuracy 1 Actions on Google 16 Activation Atlas 1 address validation API 1 Addy Osmani 1 ADK 2 AdMob 32 Ads

    TensorFlow の Dataset と Estimator の紹介
  • Tfrecords Guide

    A post showing how to convert your dataset to .tfrecords file and later on use it as a part of a computational graph. Introduction In this post we will cover how to convert a dataset into .tfrecord file. Binary files are sometimes easier to use, because you don’t have to specify different directories for images and groundtruth annotations. While storing your data in binary file, you have your data

    Tfrecords Guide
  • Building Autoencoders in Keras

    In this tutorial, we will answer some common questions about autoencoders, and we will cover code examples of the following models: a simple autoencoder based on a fully-connected layer a sparse autoencoder a deep fully-connected autoencoder a deep convolutional autoencoder an image denoising model a sequence-to-sequence autoencoder a variational autoencoder Note: all code examples have been updat

  • BigDL + Apache Spark on EMR 5.8 でお手軽分散学習 - Obey Your MATHEMATICS.

    こんにちは。例のごとく久しぶりの投稿になってしまいました。 前回投稿からいろいろな事がありました。 db analytics showcase Sapporo 2017 で講演してきたり ベイズ統計の数理と深層学習 @db analytics showcase Sapporo 2017 from Takeshi Yoneda www.slideshare.net 雑誌に激エモポエムを寄稿したり YANSに参加してきたり gunosiru.gunosy.co.jp テキストアナリティクス・シンポジウム で発表してきたり data.gunosy.io もう少しで新卒で入社して半年が過ぎるわけですが、今振り返ると当に刺激的な日々でした。近いうちに書籍の執筆もするっぽいです。 この調子で突っ走りたいと思います。 さて、前置きはこれくらいにして今日の題材は BigDL + Spark on EMR

    BigDL + Apache Spark on EMR 5.8 でお手軽分散学習 - Obey Your MATHEMATICS.
  • 大規模データのクラスタリングには Mini Batch K-Means を使うべきという話 | 10001 ideas

    タイトルの通りですが、大規模データをクラスタリングする際には単純なK-Means法ではなく、Mini Batch K-Means法を使うべきという話です。 とある大規模データ(150万件ほどの文章ベクトル)をクラスタリングしたいことがあったのですが、単純にScikit-learnのK-Means法に投げてクラスタリングを走らせていたところ、数時間経っても一向に終わる気配がありませんでした。色々と調べていると、大規模データのクラスタリングにはMini Batch K-Means法を使うべきという記述を見つけました。公式ドキュメントによると、大体1万件を超えるデータをクラスタリングする場合にはMini Batch K-Meansを使うべきとのことです。 APIとしては単純にKMeansをMiniBatchKMeansに置き換えれば動きます。理論的な背景としては、論文 “Web Scale K-

    大規模データのクラスタリングには Mini Batch K-Means を使うべきという話 | 10001 ideas
    sh19910711
    sh19910711 2018/09/05
    “APIとしては単純にKMeansをMiniBatchKMeansに置き換えれば動きます”
  • Spark で機械学習を社内データに適用してみた - astamuse Lab

    山縣です。夏休みの宿題のようにブログの当番が回ってきました。 機械学習が非常に注目を浴びている今日このごろですが、私もデータ関連を扱うソフトエンジニアの端くれとして機械学習について学んだり、機械学習のアルゴリズムを時々試したりしています。 機械学習は面白いとは思うのですが、いざ実際に業務に適用しようとするとなかなか難しいなあと感じることもあります。ちょっと試してみると思ったような精度が出なかったり、機械学習でできないかというような要望と、機械学習できそうなこと(自分自身の知識的な問題も含む)に隔たりがある気がします。 今回は比較的扱いやすそうな課題があったので、ものは試しに機械学習でやってみました的なところを書いてみたいと思います。 また機械学習のプラットフォームとして Spark を使っているのでそのあたりについても書いてみました。 残念ながら機械学習や統計などについての十分な知識や経験

    Spark で機械学習を社内データに適用してみた - astamuse Lab
  • PostgreSQLとcupyを繋ぐ~機械学習基盤としてのPG-Stromその①~ - KaiGaiの俺メモ

    世間の機械学習屋さんは、機械学習・統計解析のライブラリにデータをわせる時に、どうやってデータを入力しているのだろうか? 話を聞くに、データを一度CSV形式に落とし込んで、それをPythonスクリプトで読み込むというパターンが多いようではある。 ただ、ある程度大量のデータセットをCSVファイルで扱うようになると、いくつか問題点が露わになってくる。 解析すべきデータセットを切り替えるたびに異なるCSVファイルを用意する事になり、ファイルの取り回しが煩雑である。 前処理をかけた後のCSVファイルがまたできてしまい、ファイルの取り回しが更に煩雑になってくる。 最終的にCSVファイルの所在が誰にも分からなくなってしまい、機械学習・統計解析の元になったファイルが散逸してしまう。 そもそも、GB単位のフラットファイルをシェル上でコピーしたり読み込ませたりするのはそれなりに時間を要する処理である。 デー

    PostgreSQLとcupyを繋ぐ~機械学習基盤としてのPG-Stromその①~ - KaiGaiの俺メモ
    sh19910711
    sh19910711 2018/09/05
    おぉ / "GPUへのデータロードはGstore_fdwを用いてSQLで行った上で、その後のデータ操作、データ解析はPythonスクリプトで実行するというワークフローが出来上がる"
  • GPU Accelerated K-means - Qiita

    GPU Accelerated K-means 既存のkmeansは遅すぎる CPUでやった場合のkmeansはscikit-learnなどを使えるのですが、いかんせん遅すぎるのと、kmeansの多くは距離の定義がEuclidであって、word2vecなどのベクトル情報をクラスタリングする際には、あまり意図した通りのクラスタリングになりません また、実際に、kmeansの学習ステップを見るとほとんどのクラスが安定して更新しなくなってしまっているのに、完全に更新が止まるまで繰り返してしまうので、かなり遅いです。 任意の距離関数を定義できて、GPUで高速化されており、十分な精度やイテレーションを繰り返した上で、停止できるように設計します cupy cupyはchainerのバックエンドで用いられているnumpyの一部互換ライブラリであり、行列の計算をGPUで高速に行うことができます numpy

    GPU Accelerated K-means - Qiita
  • Pairsのコミュニティをword2vecとSVMで分類してみた