タグ

機械学習とpythonに関するsh19910711のブックマーク (255)

  • Unified Memoryを使ってGPUメモリよりも大きなモデルをChainerで扱う - Qiita

    ... cupy.cuda.memory.OutOfMemoryError: out of memory to allocate 8589934592 bytes (total 17179869184 bytes) などとエラーを吐かれて泣いた記憶はないでしょうか。 最近は様々な分野で深層学習のモデルの巨大化が激しいです。学習時間が長くなるのは致し方ないとして、モデルによってはGPUメモリにのらず、そもそもまともに動かすことができないという問題に直面することがあります。特に、Graph Convolution系のアルゴリズムでは、ミニバッチ学習方法が確立されていない1ため、GPUメモリの大きさの制約を受けやすいです。 記事では、Pascal以降のNVidia GPUから機能が拡張された2Unified Memoryを使って、GPUメモリよりも大きなモデルをChainerで扱う方法を紹介し

    Unified Memoryを使ってGPUメモリよりも大きなモデルをChainerで扱う - Qiita
    sh19910711
    sh19910711 2024/06/06
    "Unified Memory: Pascal以降のNVidia GPUから機能が拡張 / GPUメモリよりも大きなモデルをChainerで扱う方法 + パフォーマンス改善につながらないので、ミニバッチの大きさを大きくする目的では使わない" 2019
  • ランク学習のListNetをChainerで実装してみた - Qiita

    はじめに ランク学習 (Learning to Rank) の手法である、ListNetをChainerで実装します! 記事は、Chainer Advent Calendar 2016 7日目です. 手法の説明 まず、ランク学習については、Advent Calender 5日目でsz_drさんが素晴らしい記事を書いているので、是非そちらをご覧ください。 時間のない方のために一言で言うと、「1セット(クエリ)の中に複数データがあり、それらに相対的な尺度が与えられたときに、教師付きの条件で順序付けを学習する」問題です。ラベルがクエリ間で絶対的な数値を取らないことが普通の教師付き学習との差になります。 RankNetとの違い ニューラルネット+ランク学習で多くのの方が真っ先に思い浮かべるRankNetだと思います。実は、ランク学習の定式化方法は複数あり、RankNetはpairwise、Lis

    ランク学習のListNetをChainerで実装してみた - Qiita
    sh19910711
    sh19910711 2024/06/06
    "ランク学習の定式化方法は複数あり、RankNetはpairwise、ListNetはlistwiseな手法 / PPD: データの各並び順 (permutation) の起こりやすさを確率分布にしたもの + データごとのスコアから計算" 2016
  • TFGANでFashion MNISTのGANをさくっと試す - Qiita

    これはTensorFlow Advent Calendar 2017の22日目の記事です。 12/12にGoogleからTFGANがリリースされた。TFGANはTensorFlowでGenerative Adversarial Networks (GAN)を手軽に使えるライブラリ。さっそく触ってみたので、お手軽に試す手順を紹介したい。おそらく30〜60分ほどでこんなふうにFashion MNISTの画像が徐々に生成されていく様子が確認できるはず。 TFGANで生成したFashion MNIST画像 GANって何? GANについては、アイドル画像生成いらすとや画像生成などの事例で目にしたことのある人も多いはず。いわゆる生成モデルに分類される技法で、既存のデータを投入して学習すると、そのデータの特徴を捉えた新しいデータの生成を行える。2014年にIan Goodfellow他が考案したモデ

    TFGANでFashion MNISTのGANをさくっと試す - Qiita
    sh19910711
    sh19910711 2024/06/06
    "TFGAN: TensorFlowでGANを手軽に使えるライブラリ / GAN: 既存のデータを投入して学習すると、そのデータの特徴を捉えた新しいデータの生成 + 2014年にIan Goodfellow他が考案 / 従来のGANは学習が安定しないという問題があった" 2017
  • 深層生成モデルのtensorflowによる実装(Importance Weighted Autoencoders) - Qiita

    最近、深層生成モデルに興味あるのでICLRにも採択されていたIWAE(Importance Weighted Autoencoders)の実装をTensorFlowで行いました。ついでにBengio達の書いたDeepLearningの20章(Deep generative models)を一部まとめました。 深層生成モデルとは? 深層生成モデルが何かと言われる難しいですがおそらくNeural Networkを使った生成モデルです。 Bengioにも書かれていますがDeepLearningの中でも最重要研究の一つです。実際、DeepLearning系の国際会議ICLRにも結構それ系の話が出ています。 例えば深層生成モデルを使うと下のようなことができます。具体的には例えばだんだん元の数字に対して0を足しこんでいくということができるようになります。(下の画像は上の行が元の(reconstru

    深層生成モデルのtensorflowによる実装(Importance Weighted Autoencoders) - Qiita
    sh19910711
    sh19910711 2024/06/02
    "深層生成モデルの基本となる二大柱としてVAEとGAN + もう一つ全然違う考え方の生成モデルとしてGMM / GMM: MMDを使って密度を合わせていく + Autoencoderと組み合わせて使う" 2016
  • Siamese Networkをchainerで実装するまで(1) - Qiita

    Siamese Networkを理解してchainerで実装するまでの流れを書きたいと思います。 Siamese Networkとは、1クラスあたりの学習データが極端に少ないケース(これをone shot learningとかfew shot learningと言います)にでもうまく学習をしてくれるネットワークモデルです。 Siamese Networkは20年以上前に作られたものらしいのですが、近年のディープラーニングブームでSiamese NetworkにCNNやLSTMを組み込んだものが良い結果を出してきて、プチブームが起こっている気がします。(GANには遠く及びませんが) このSiamese Networkに基づいた研究にNIPS2016で発表された”Matching Networks for One Shot Learning”(Oriol)があります。個人的にはこれを実装するこ

    Siamese Networkをchainerで実装するまで(1) - Qiita
    sh19910711
    sh19910711 2024/05/31
    "Siamese Networkは20年以上前に作られたもの / CNNやLSTMを組み込んだものが良い結果を出してきて、プチブームが起こっている / 同じクラス同士のデータを近くに、違うクラス同士のデータを遠くに写像" 2017
  • 【Python】 KerasでU-Net構造ネットワークによるセグメンテーションをする - 旅行好きなソフトエンジニアの備忘録

    ここ(Daimler Pedestrian Segmentation Benchmark)から取得できるデータセットを使って、写真から人を抽出するセグメンテーション問題を解いてみます。U-Netはここ( U-Net: Convolutional Networks for Biomedical Image Segmentation )で初めて発表された構造と思いますが、セグメンテーション問題にMax Poolingを使うのは良くないといった話があったり、Batch Normalization等も使いたいということで、pix2pixのGeneratorとして利用されているU-Net構造のネットワークを利用します。 github.com 実行環境は以下になります。 Windows10 64bit Python3.5.2 Keras2.0.4 BackendはTensorflow CPU版 まずは

    sh19910711
    sh19910711 2024/05/31
    "U-Net: pix2pixのGeneratorとして利用 / セグメンテーション問題にMax Poolingを使うのは良くないといった話があったり / 上手くいっていない例を見ると、学習データに類似パターンが無さそう" 2017
  • Microsoft社製AutoMLツールFLAMLが便利すぎた! - Qiita

    はじめに 記事ではMicrosoft社製のAutoMLツールであるFLAMLについて数ヶ月使用してみたので、使用感や私が考える効果的な使い方などと共にご紹介したいと思います。 AutoMLツールはいろいろ出てきていますが、その中でもFLAMLは使いやすく拡張性の高い印象です。特にAzureを使っている場合はメリットも大きいでしょう。 日語の記事が少ないようなので、記事がFLAMLを使う上で参考になれば幸いです。 FLAMLとは 最初に紹介した通り、FLAMLはMicrosoft社製のAutoMLツールです。 AutoMLと一言で言ってもいろいろありますが、FLAMLはxgboostやlightgbmなど複数の機械学習アルゴリズムの中から最適なモデルとそのモデルの最適なパラメータを自動でチューニングしてくれる機能を提供します。また、NASのように大量の計算リソースを必要とするわけではな

    Microsoft社製AutoMLツールFLAMLが便利すぎた! - Qiita
    sh19910711
    sh19910711 2024/05/29
    "FLAML: 複数の機械学習アルゴリズムの中から最適なモデルとそのモデルの最適なパラメータを自動でチューニング + NASのように大量の計算リソースを必要とするわけではなく、非常に高速かつ軽量なのが特徴" 2022
  • scikit-learnとTensorFlowによる実践機械学習

    以前Tensorflowのを探してた事を覚えてた編集さんが、「最近Tensorflowのを出したので良かったら読んで見てください」と言って献してもらった。 今の自分がTensorflowについて学べるがこの世に存在するとは思えないのだけれど、このの評判は機械学習としてそこそこ良さそうで、ちょっと気になっては居た。 今年前半は小難しいを読んでばかり居たのでここらで息抜きに軽く普通のも読みたいと思ってた所なので、読んで見る事にする。 なお、私はたぶんそもそもに対象読者じゃない気がするので、このブログのポストを読む時はそのへんは差し引いてください。 開幕の前提にいまいち同意出来ない このは、プログラマのツールボックスに新しく機械学習を追加しよう、という前提で書かれている。 でもこの前提がもはや成立しないんじゃないか。 これは機械学習を、まるでサービス開発の一手法として必要に

    sh19910711
    sh19910711 2024/05/29
    "機械学習の世の中の入門書: 探索的なプロセスが一番難しいのに、そこ以外の所にページの大半を割く / 究極的には「プロジェクトの状況次第で全然違う」という結論しか出ないので本にするのは難しい" 2018
  • fastaiで学習に使う関数をApache MXNetで真似してみた - aptpod Tech Blog

    はじめに 先進技術調査グループのせとです。ブログでは、Apache MXNetを用いてfastaiで実装されている実践的な関数を真似てみた結果を紹介します。この試みのゴールは、完全一致の結果を目指すのではなく同じような傾向を得られるかを目指したものになります。完全一致を目指したいところですが、各フレームワークで用意しているモデルの構造が少し違ったり、各関数の計算方法が異なるので結果が等しくなりませんでした。もちろん、他方に併せて関数を自作すればほとんど一致する結果を得ることができますが実装のコストが高かったため、今回は行いませんでした。 モチベーション 弊社のプロジェクトAI部分をAmazon SageMaker(以下、SageMaker)を使って実装したい要望がありました。しかし、プロジェクトで利用していたフレームワークはfastaiであるために簡単にSageMaker上で実行できな

    fastaiで学習に使う関数をApache MXNetで真似してみた - aptpod Tech Blog
    sh19910711
    sh19910711 2024/05/29
    "Apache MXNet: 自作関数を書くような低レベルな書き方や、gluonをつかった高レベルな書き方など柔軟なフレームワーク + 簡易に実装を書ける / fastai: PyTorchをベース + 論文の成果を実装して使えるようにしている" 2020
  • 【AutoGluon】画像やテキストを含む表データの分類 - パソコン関連もろもろ

    2021年12月15日記事を修正しました はじめに 手順 データのダウンロード 学習 テストデータを使った検証 動作環境 環境構築 良い結果を求めて(追記) 変更点 結果 はじめに下記のチュートリアルページを実行してみました。 auto.gluon.ai 扱うデータは表形式データですが文章を含んだ列と画像を含んだ列があります。 そのデータを使った分類問題です。手順データのダウンロード from autogluon.core.utils.loaders import load_zip download_dir = './ag_petfinder_tutorial' zip_file = 'https://automl-mm-bench.s3.amazonaws.com/petfinder_kaggle.zip' load_zip.unzip(zip_file, unzip_dir=downl

    【AutoGluon】画像やテキストを含む表データの分類 - パソコン関連もろもろ
    sh19910711
    sh19910711 2024/05/27
    "扱うデータは表形式データですが文章を含んだ列と画像を含んだ列 / autogluon: 「MXNet」と「PyTorch」の両方が必要 / CUDAのバージョンは11.3ですがmxnet-cu112が問題なく動いています / presets='best_quality'" 2021
  • Python: LightGBM を使ってみる - CUBE SUGAR CONTAINER

    LightGBMMicrosoft が開発した勾配ブースティング決定木 (Gradient Boosting Decision Tree) アルゴリズムを扱うためのフレームワーク。 勾配ブースティング決定木は、ブースティング (Boosting) と呼ばれる学習方法を決定木 (Decision Tree) に適用したアンサンブル学習のアルゴリズムになっている。 勾配ブースティング決定木のフレームワークとしては、他にも XGBoost や CatBoost なんかがよく使われている。 調べようとしたきっかけは、データ分析コンペサイトの Kaggle で大流行しているのを見たため。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.13.4 BuildVersion: 17E202 $ python -V Pyt

    Python: LightGBM を使ってみる - CUBE SUGAR CONTAINER
    sh19910711
    sh19910711 2024/05/27
    "LightGBM: Microsoft が開発した勾配ブースティング決定木 / scikit-learn に準拠したインターフェースも用意されている / ブーストラウンドごとの評価関数の状況を交差検証で確認できる機能もある + early_stopping_rounds" 2018
  • XGBoostはpickleでなくJSONで保存せよ 備忘録 - Qiita

    概要 GPU付きPCでモデルのTrainingを行いpredictはGPUなし(つまりCPUのみ)のPCで行う運用を想定する。 そのときのXGBoostモデルの保存方法について備忘録を残す。 実施時期: 2022年9月 Python: conda 3.8.13 XGBoost: py-xgboost, py-xgboost-gpu 1.6.1 問題 XGBoostはLightGBMに比べTrainingが遅いことは有名だ。GPUを使えばCPUよりも体感で4~5倍高速になり十分な速さだが、どのPCにもGPUが乗っているわけではない。 しかしCPUであってもPredictはLightGBMより速いのでdeployを考えるとどうしてもXGBoostを使いたくなる。老舗なため情報が豊富なこともありがたい。 ただモデル保存時、いつもの便利なpickleで保存してしまうと運用時に困ったことになってしま

    XGBoostはpickleでなくJSONで保存せよ 備忘録 - Qiita
    sh19910711
    sh19910711 2024/05/27
    "XGBoost: LightGBMに比べTrainingが遅い + CPUであってもPredictはLightGBMより速い / deployを考えるとどうしてもXGBoostを使いたくなる。老舗なため情報が豊富 / pickleで保存してしまうと運用時に困ったことになってしまう" 2022
  • AugLyを少し試してみた - Qiita

    はじめに facebookresearchからAugLyという新しいデータ拡張ライブラリが出てきたので少し試してみました。この記事は、試してみた結果の備忘録となっております。 AugLyは、画像・音声・テキスト・ビデオで100種類以上のデータ拡張に対応しているらしいです。 以下では、試してみたときの環境構築についてと、画像と音声に対する拡張処理の一部について記載しています。 ※この記事で行った処理に関してはGitHub上で公開しております。(特に音声の拡張に関しては、実際にノートブックを実行して聞いてみると分かりやすいと思います。) 環境構築 今回はWSL2上にpipenvを使って環境構築をしました。 ApplyLambda, Blur, Brightness, ChangeAspectRatio, ColorJitter, Contrast, ConvertColor, Crop, En

    AugLyを少し試してみた - Qiita
    sh19910711
    sh19910711 2024/05/26
    "AugLy: 画像・音声・テキスト・ビデオで100種類以上のデータ拡張に対応 / 画像の上にEmojiを張ってくれる拡張 + 自分の好きなEmojiを貼れたりするっぽい / pytorchのComponentみたいにOneOfとかも使えたりする" 2021
  • ニューラルネットワークでミニバッチの学習データを固定とランダムのハイブリッドにすると結果がよくなった - Qiita

    はじめに 前回の記事を作成する過程で偶然よい結果を得たので紹介します。 ミニバッチの学習データをランダムにした際の学習結果が前々回より、よくなったので原因を調べていたら固定時 vs ランダム時の学習結果を比較しているつもりが固定時 vs 固定時+ランダム時の学習結果を比較していることがわかりました。 (前回の記事ではちゃんと固定時 vs ランダム時の比較になっています) 環境 python: 2.7.6 chainer: 1.8.0 学習内容 一般的なエポック毎にミニバッチの学習データをランダムシャッフルにした場合と、固定とランダムシャッフルのハイブリッドにした場合の違いを確認します。 学習させるのは例のごとくsin関数です。 [training data] input: theta(0~2π, 1000分割) output: sin(theta) 実装 モデルを2回作成 今回の発見はラン

    ニューラルネットワークでミニバッチの学習データを固定とランダムのハイブリッドにすると結果がよくなった - Qiita
    sh19910711
    sh19910711 2024/05/24
    "ミニバッチの学習データをランダムシャッフルにした場合と、固定とランダムシャッフルのハイブリッドにした場合の違い / 今回の発見はランダム時の学習前にモデルの学習結果をリセットし忘れたことによるもの" 2016
  • Pytorch高速化 (3) TensorRTで推論を10倍高速化 - arutema47's blog

    TLdr; torch2trtというpytorchモデルをTensorRTに簡単に変換するライブラリを使い、Jetson nano+xavier上で画像認識とセグメンテーションの推論処理を10倍高速化できることを確認しました。 ただtorch2trtはカスタムモデルには対応していないため(resnetなどtorchvision標準モデルのみ)、自作モデルのTensorRT変換は大変だと思います。 TLdr; TensorRTとは TesnorRTを気軽に試す 画像認識 画像セグメンテーション 他高速化シリーズ aru47.hatenablog.com aru47.hatenablog.com TensorRTとは https://amzn.to/3q9qrEK https://amzn.to/37ndtL5 例えばJetsonNanoなどは安価に入手できるエッジデバイスだが搭載しているGP

    Pytorch高速化 (3) TensorRTで推論を10倍高速化 - arutema47's blog
    sh19910711
    sh19910711 2024/05/24
    "TensorRT: 推論を高速化させるフレームワーク + エッジデバイスでも高速な推論が可能 / グラフ最適化: CNN, relu, batchnormと3ステップ計算が頻出することを利用し、その計算をまとめた専用レイヤーを用意" 2020
  • featuretoolsで特徴量を自動生成して機械学習モデルの構築を楽に早くする手法 - Qiita

    概要 機械学習モデルを作るときに、特徴量を増やすことでモデルの精度を向上させようと試みるタイミングがあります。例えば、学習用データを作成するときに SELECT id, COUNT(hoge) FROM table GROUP BY id みたいに、何かの回数とかの変数を新たに作って追加するといった感じです。 こういった特徴量設計は機械学習の前処理の中でもそこそこに重要な工程であると思っています。 課題 しかしながら、こういった特徴量設計では ドメイン知識がないとうまい変数を思いつかない どのくらいの変数を用意すればよいのか見当がつかない 特徴量生成自体の作業が割とめんどくさい など、重要だけど大変な面もあるという感じになっており、これを できれば特徴量は自動でいい感じに作って欲しい コードをシンプルにしてスッキリさせたい という形で実現できないものかと思うところです。 解決策 以上の課題

    featuretoolsで特徴量を自動生成して機械学習モデルの構築を楽に早くする手法 - Qiita
    sh19910711
    sh19910711 2024/05/24
    "特徴量設計: ドメイン知識がないとうまい変数を思いつかない + どのくらいの変数を用意すればよいのか見当がつかない / featuretools: そこそこのスコア + 深く考えずにサクッとモデルを作ってみたいときに使えそう" 2018
  • TensorflowでプチRNNによるロジスティック写像のカオス回帰 - Qiita

    Recurrent Neural Network (リカレントニューラルネットワーク) 時系列データなど連続値で相関がありそうなものに対して、入力を一つづつ処理しつつネットワーク内部で状態値を保持して、入力が全て終わった後に最終的な出力をしてくれるRNNさん。 実世界の時系列データだとノイズが入りすぎるし、Tensorflowのチュートリアルのような言語系だとイマイチ"時系列"としてのイメージが難しい。 そしてイマイチRNNCellクラスの仕様がつかめないので、諦めて実験的に簡単な自己フィードバックのモデルを作ってみます。 検証対象 : カオス力学 バタフライエフェクトで有名なカオスですが、一見ランダムに見えるんだけど実はある法則みたいなものがある事象を分析する上で役に立つやつです。 その中でも個人的に一番分かりやすい Logistic Map(ロジスティック写像)を例にお話をします。 離

    TensorflowでプチRNNによるロジスティック写像のカオス回帰 - Qiita
    sh19910711
    sh19910711 2024/05/24
    "カオス: ランダムに見えるんだけど実はある法則みたいなものがある / 法則にしたがっているなら簡単に予測できそう / カオスがカオスたる所以: 初期値やパラメーターがほんの僅か違うだけでまったく違う値に" 2016
  • TensorFlow Object Detection APIを使ってFaster R-CNN、R-FCN、SSDを比較してみた - Qiita

    TensorFlow Object Detection APIを使ってFaster R-CNN、R-FCN、SSDを比較してみた機械学習MachineLearningTensorFlow物体検出ObjectDetection 5行まとめ TensorFlow Object Detection APIには各種モデルが準備されており、簡単に試すことができた。 SSDは推論がとても早いが学習に時間がかかる。 R-FCNは推論時間でSSDに劣るが、検出精度がSSDより高め。学習時間と精度のバランスも良い。 ラベル付けの補助としてR-FCNを使い、推論時間が重要な場面での最終的な検出器としてSSDを使うのが良さそう。 ラベル付け(アノテーション)は苦行。 概要 TensorFlow Object Detection APIを使い、独自のデータセットで物体検出(Object Detection)を行っ

    TensorFlow Object Detection APIを使ってFaster R-CNN、R-FCN、SSDを比較してみた - Qiita
    sh19910711
    sh19910711 2024/05/24
    "SSD: 推論がとても早いが学習に時間がかかる / R-FCN: 検出精度がSSDより高め / ラベル付けの補助としてR-FCNを使い、推論時間が重要な場面での最終的な検出器としてSSDを使うのが良さそう" 2019
  • Python: PyTorch の RNN を検算してみる - CUBE SUGAR CONTAINER

    今回は、PyTorch の RNN (Recurrent Neural Network) が内部的にどんな処理をしているのか確認してみる。 なお、ここでいう RNN は、再起的な構造をもったニューラルネットワークの総称ではなく、いわゆる古典的な Simple RNN を指している。 これを書いている人は、ニューラルネットワークが何もわからないので、再帰的な構造があったりすると尚更わからなくなる。 そこで、中身について知っておきたいと考えたのがモチベーションになっている。 使った環境は次のとおり。 $ sw_vers ProductName: macOS ProductVersion: 11.5.2 BuildVersion: 20G95 $ python -V Python 3.9.6 $ pip list | grep torch torch 1.9.0 もくじ もくじ 下準備 モデルを

    Python: PyTorch の RNN を検算してみる - CUBE SUGAR CONTAINER
    sh19910711
    sh19910711 2024/05/23
    "ニューラルネットワークが何もわからないので、再帰的な構造があったりすると尚更わからなくなる / (総称としての) RNN は縦に積み重ねることで性能向上が望める / num_layers という引数 + デフォルト値は 1" 2021
  • 『Phase reconstruction based on recurrent phase unwrapping with deep neural networks』に基づく位相復元手法をPyTorchで実装した - 備忘録

    はじめに 実装 実験 音声の分析条件 実験結果 おわりに はじめに Masuyama氏らによる位相復元手法 "Phase reconstruction based on recurrent phase unwrapping with deep neural networks"が2020年に提案されている. https://ieeexplore.ieee.org/document/9053234 arxiv.org 手法は,まずDNNで位相の微分(時間方向・周波数方向)を推定し,次に推定した微分に基づいて位相を再帰的に求める(積分する,アンラッピング)という2段階の処理からなる.位相が波形のずれに敏感という問題を回避しつつ,従来のDNNによる位相の直接推定(von Mises DNN)よりも高い精度で位相を推定することができる,というわけである.「位相を再帰的に求める」 recurrent

    『Phase reconstruction based on recurrent phase unwrapping with deep neural networks』に基づく位相復元手法をPyTorchで実装した - 備忘録
    sh19910711
    sh19910711 2024/05/22
    "RPU: DNNで位相の微分(時間方向・周波数方向)を推定 + 推定した微分に基づいて位相を再帰的に求める(積分する,アンラッピング) / 位相が波形のずれに敏感という問題を回避" arXiv:2002.05832