ブックマーク / qiita.com/yagays (21)

  • Pytorchにおいて自作Dataset内で乱数を使うときの注意点 - Qiita

    Pytorchで少し凝った入出力のNNを作成するときには、既存のDatasetで対応できないことがあります。その際にはtorch.utils.data.datasetを継承する形で自作のDatasetを作成するのですが、そこで乱数を使っていると意図しない挙動をするケースがあったので、書き残しておきます。乱数と再現性は当に難しいですね……。 環境 Python 3.6.3 Pytorch 0.4.1 macOS High Sierra 10.13.6 問題 ここでは例として、以下のようにnp.random.uniform(-1, 1)の値を返すDatasetを考えます。想定としては、このDatasetから値を取り出すたびに、-1から1の間の値がランダムに返ってきてほしいわけです。 import torch from torch.utils.data.dataset import Datas

    Pytorchにおいて自作Dataset内で乱数を使うときの注意点 - Qiita
    yag_ays
    yag_ays 2018/08/17
  • fish shellの起動時間が遅いのでプロファイルを取得する - Qiita

    概要 fish shellの起動がだんだん遅くなってきたので、設定ファイルの棚卸しも兼ねて起動時のプロファイルを取得して遅い部分を調査しました。 プロファイルの取得 一般にfish shellでプロファイルを取得するには、fishの起動時に--profile /path/to/file.txtというオプションを指定します。 これで新しくfish shellが立ち上がり、シェルを終了するまでの実行されたコマンドとその処理時間が詳細に記録されます。 例えば、lsを実行すると以下のような結果が出てきます。なお、ここに示している出力以外にも大量にコマンドが前後に出てきますが、ここでは割愛しています。 Time Sum Command [...] 436 31113 > ls 401 14172 -> source /usr/local/Cellar/fish/2.7.1/share/fish/fu

    fish shellの起動時間が遅いのでプロファイルを取得する - Qiita
    yag_ays
    yag_ays 2018/04/05
  • gensimのword2vec/doc2vecで学習ロスを出力しつつ学習率alphaの値を変えて学習する - Qiita

    概要 gensimを使ったword2vec/doc2vecの実行は、下記のようにモデルを作成して学習させるだけで簡潔に実現できます。 # https://rare-technologies.com/word2vec-tutorial/ model = gensim.models.Word2Vec(iter=1) # an empty model, no training yet model.build_vocab(some_sentences) # can be a non-repeatable, 1-pass generator model.train(other_sentences) ただ、細かな学習の管理等はgensimにおまかせになってしまうので、なるべく丁寧なチューニングができるように、この記事では 学習時に学習ロスを出力する 学習率alphaの値を変えながら学習させる の2つの

    gensimのword2vec/doc2vecで学習ロスを出力しつつ学習率alphaの値を変えて学習する - Qiita
    yag_ays
    yag_ays 2018/01/17
  • Pandasで数値の大きな順に列番号を取り出す - Qiita

    多クラス分類や多ラベル分類などで目的変数ごとに複数の確率値が出てきた場合、確率値の高い順に並べたいということはよくあるので、Pandasでのやり方を簡単に記載しておきます。 まず例として列ごとに各クラスの確率値が入ったDataFrameを作成します。ちなみにここで各クラス名を0,1,2にしているのは、このあと作成するインデックスの数字に合わせているためです。後ほど変換できるので、任意の名前で問題ありません。 In [1]: import numpy as np In [2]: import pandas as pd In [3]: pred = pd.DataFrame({"class0":[0.1,0.4,0.3], "class1":[0.5,0.2,0.4], "class2":[0.3,0.5,0.8]}) In [4]: pred Out[4]: class0 class1 cl

    Pandasで数値の大きな順に列番号を取り出す - Qiita
    yag_ays
    yag_ays 2017/09/24
  • https://qiita.com/yagays/items/d76ce1abf2988542a3cc

    yag_ays
    yag_ays 2017/08/11
  • 学習済みの分散表現をLSTMの埋め込み層に利用する - Qiita

    概要 自然言語処理におけるディープラーニングでニューラルネットを構成する際には、RNNやLSTMなどの層の前に、単語ごとに任意の次元のベクトルを用意した埋め込み層(embedding layer)を利用することがあります。この層はニューラルネットの学習の際に同時に重みを学習することもできますが、既に単語の分散表現(word embedding)を別の手法やデータセットで学習しておき、学習済みの分散表現を重みとして利用することができます。 今回は、Kerasにおいて埋め込み層に学習済みの分散表現を利用する方法を紹介します。今回は、word2vec等の機能を提供しているパッケージgensimでの読み込み機能を用いることにします。 方法 日語の単語分散表現 今回は東北大の乾/岡崎研究室が公開している「日Wikipedia エンティティベクトル」を利用します。 日Wikipedia

    学習済みの分散表現をLSTMの埋め込み層に利用する - Qiita
    yag_ays
    yag_ays 2017/07/25
  • AWSのGPUインスタンスにTensorflow/Keras環境を構築する 2017年6月版 - Qiita

    概要 AWSGPUインスタンスに、TensorflowおよびKerasがGPUで動作する環境を構築します。 こういった記事がn番煎じなのは承知の上ですが、それでもネットには各々のタイミングで書かれ最新かどうかも分からない資料が散逸しているので、こういうものと割り切って今の現状を書きます。まだまだ手作業な部分がありつつも、NouveauやCUDA Toolkitの手動インストールから解放されたようです。 参考資料 基的には下記URLの内容を参考にします。細かなバージョン等は変更を加えています。 How to Set Up a Deep Learning Environment on AWS with Keras/Theano AWS E2 G2インスタンス上にKeras環境を構築する 2017年2月版 - Qiita OS: Ubuntu Server 16.04 LTS (HVM),

    AWSのGPUインスタンスにTensorflow/Keras環境を構築する 2017年6月版 - Qiita
    yag_ays
    yag_ays 2017/06/05
  • Pythonでコマンドラインからpickleの中身を確認する - Qiita

    tl;dr python -m picke hoge.pklでpickleの中身を直に見ることができることを初めて知った。これまで.pklにしたいけどlessできないしなと悩んでたのが馬鹿みたいだ…… https://t.co/QUXqS8WyLh — やぐ (@yag_ays) February 9, 2017 課題 Pythonで様々なオブジェクトをpickleという形式でシリアライズすることができます。一方で、jsonファイルやテキストファイルと違いバイナリファイルとなるため、catやlessで容易に確認することができず、いちいちpythonのインタプリタでwith句を書いて中身を取り出す必要があると思っていました。 # 書き込み with open("hoge.pkl", mode="wb") as f: pickle.dump({"hoge":"fuga"}, f) # 読み込み

    Pythonでコマンドラインからpickleの中身を確認する - Qiita
    yag_ays
    yag_ays 2017/03/21
  • VotingClassifierを使いつつGridSearchCV/RandomizedSearchCVでパラメータチューニング - Qiita

    VotingClassifierを使いつつGridSearchCV/RandomizedSearchCVでパラメータチューニングPythonMachineLearningscikit-learn 概要 scikit-learnでは複数のモデルの予測値を特定のルールに則ってマージするVotingClassifierがある。入力とするモデルは、個別にパラメータを指定した状態で投げるか、パラメータチューニングとVotingClassifierを同時に動かす必要がある。 今回はVotingClassifierを使いつつ個々のモデルでもパラメータチューニングする方法をまとめてみる。基的には、下記ドキュメントに書かれている方法と同じ。 1.11. Ensemble methods — scikit-learn 0.18.1 documentation パラメータの指定方法 GridSearchCV/

    VotingClassifierを使いつつGridSearchCV/RandomizedSearchCVでパラメータチューニング - Qiita
    yag_ays
    yag_ays 2017/03/13
  • PythonでMarkdownからHTMLに変換する - Qiita

    DjangoやBottleでウェブアプリの開発をしていると、入力されたテキストに対してPythonMarkdownのレンダリングをしたくなることがあります。そこで今回はmistuneというOSSのパッケージを利用して、Python側でHTMLに変換することを試してみます。 シンプルな使い方 mistuneのREADMEに書かれているサンプル通り動かすと、以下のようになります。ポイントとしては、通常のテキストの場合は段落ごとに<p>タグで囲われており、その中で強調表示や斜体などが展開されます。リスト表記などの場合は、対応するタグで囲われるという感じです。 In [1]: import mistune In [2]: mistune.markdown('I am using **mistune markdown parser**') Out[2]: '<p>I am using <stron

    PythonでMarkdownからHTMLに変換する - Qiita
    yag_ays
    yag_ays 2016/12/08
  • atom-beautifyを使ったJinja2のソースコード整形 - Qiita

    Atomを使った開発では、atom-beautifyというソースコード整形のパッケージを使うと良い感じにインデントや改行を入れてくれます。サポートしている言語も幅広く、それぞれにインデント幅やスタイルの指定など細かな設定ができるすぐれものです。 最近Djangoを書いている都合でJinja2形式のHTMLを書くことが多いのですが、atom-beautifyのデフォルトのHTMLの整形ルール(JS Beautify)では{{}}などの対応がなく包含関係などを上手に整形してくれないという不満がありました。 最初は「Jinja2対応の整形ルールなんて無いよな」と思って諦めていたのですが、どうやらHTMLのBeautifierでPretty Diffを選択すると良いということが分かり、早速やってみることに。 Support (html) jinja2 templates · Issue #418

    atom-beautifyを使ったJinja2のソースコード整形 - Qiita
    yag_ays
    yag_ays 2016/11/17
  • numpyでカラムごとに異なる桁数でcsv出力する - Qiita

    機械学習で計算した予測結果を出力するときには、 二値分類なら0/1で出力したい 確率値なら[0,1]でだいたい小数点以下5桁くらいで出力したい 回帰なら取りうる値のレンジに合わせて適当に指数表記で出したい といったように出力する値の桁数を調整したいことがあります。 numpyではnumpy.savetxt()にてcsvやtsvを出力できますが、このときにfmtパラメータを指定することで桁数を調整することが可能です。 In [1]: import numpy as np In [2]: np.savetxt("output.csv", [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]]) In [3]: cat output.csv 1.000000000000000056e-01 2.000000000000000111e-01 2.999999999999999889e

    numpyでカラムごとに異なる桁数でcsv出力する - Qiita
    yag_ays
    yag_ays 2016/11/10
  • PythonのURLとクエリパラメータのパースまとめ - Qiita

    tl;dr ここでは、PythonでのURLやクエリパラメータの解析、パーセントエンコーディングの変換方法をまとめています。 なお、Python3ではURLの取得や解析等のモジュールがurllibに統一されています。以下に簡単に対応表をまとめました。 Python2 Python3

    PythonのURLとクエリパラメータのパースまとめ - Qiita
    yag_ays
    yag_ays 2016/09/26
  • AWSにあるJupyter NotebookからpandasでS3のファイルを読み込むときの設定 - Qiita

    概要 AWSでのEC2でJupyter Notebookを運用している場合には、以下のようにpd.read_csv()からS3にあるデータのパスを指定して直接読み込むことができます。 import pandas as pd os.environ["AWS_ACCESS_KEY_ID"] = "XXX..." os.environ["AWS_SECRET_ACCESS_KEY"] = "YYY..." all_df = pd.read_csv("s3n://mybucket/path/to/dir/data.csv") このとき、上記のようにAWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYをあらかじめ環境変数で指定しておく必要があります。 これらの指定を毎回するのは正直言って面倒です。import pandas as pdなどのパッケージのインポートは手癖のよう

    AWSにあるJupyter NotebookからpandasでS3のファイルを読み込むときの設定 - Qiita
    yag_ays
    yag_ays 2016/09/16
  • HDF5の古いバージョンでKerasのモデルの保存ができない - Qiita

    tl;dr hdf5のバージョンが古いとKerasのsave_weightsが動かない yumでhdf5-develを入れるのはやめて、ソースコードからコンパイルしよう 概要 Kerasではモデルを保存/ロードする際にHDF5を利用します。このHDF5のバージョンが古いとHDF5のエラーで落ちることがあるので、そのエラーと対策を書き残しておきます。 エラー $ python test.py Using Theano backend. Traceback (most recent call last): File "test.py", line 21, in <module> model.save_weights('temp_keras.model', overwrite=True) File "/usr/local/lib/python2.7/site-packages/keras/eng

    HDF5の古いバージョンでKerasのモデルの保存ができない - Qiita
    yag_ays
    yag_ays 2016/05/25
  • Bottleのhookを使ってレスポンスヘッダを付与する - Qiita

    概要 Pythonの軽量フレームワークであるBottleで、CORS(Cross-Origin Resource Sharing)のためにレスポンスヘッダを付与します。この記事では、公式ドキュメントのRecipeに書かれている標準的な方法を記載しています。 Recipes — Bottle 0.13-dev documentation コード Bottleではhookというデコレータを使って、関数が実行される前後に処理を追加することができます。これを使うことにより以下のコードのように@hook('after_request')でWebAPIから返されるレスポンスすべてにレスポンスヘッダを設定することができます。 from bottle import hook, response @hook('after_request') def enable_cors(): response.heade

    Bottleのhookを使ってレスポンスヘッダを付与する - Qiita
    yag_ays
    yag_ays 2016/05/22
  • API Blueprintで書いたWeb APIをdreddでテストする - Qiita

    前々回:API BlueprintでWeb APIのドキュメントを生成する - Qiita 前回:API Blueprintとapi-mockでモックサーバを作成する - Qiita 概要 さて、今回はAPI Blueprintを使って作成したWeb APIがドキュメント通りに動作するかを、dreddを使ってテストします。 dreddとは dreddはAPI BlueprintをベースにしたWeb APIのテストフレームワークです。"Language-agnostic"と謳っているだけあってテストのフックにはnode.js以外にもgoPythonRubyなど多様な言語が利用でき、またCircleCIやJenkinsCIなどのCIのサポートもあります。 このように、API Blueprintのエコシステムに乗っかることによって、API Blueprint形式で書いた仕様からaglioを使

    API Blueprintで書いたWeb APIをdreddでテストする - Qiita
    yag_ays
    yag_ays 2016/04/23
  • API Blueprintとapi-mockでモックサーバを作成する - Qiita

    前回:API BlueprintでWeb APIのドキュメントを生成する - Qiita 概要 ここでは、api-mockを使って記述したドキュメント通りに動くWeb APIを立ててみます。 api-mockで立ち上がるモックサーバは、実際にはデータの追加や削除等のデータに応じたレスポンスを作ることはできません。APIを1から実装する段階ではあまり恩恵がありませんが、既に他のアプリケーションとの連携ができる場合などには、疎通確認したいといったケースには便利なツールです。 また、きちんとドキュメント通りに想定するレスポンスが返ってくるので、MacOSならパイプを挟んでpbcopyすることにより、手軽にコピペできる等の使い方も考えられます。 api-mockでWeb APIドキュメントからモックサーバを立ち上げる api-mockコマンドで先ほど作成したrecipe.apibを指定するだけでサ

    API Blueprintとapi-mockでモックサーバを作成する - Qiita
    yag_ays
    yag_ays 2016/04/23
  • API BlueprintでWeb APIのドキュメントを生成する - Qiita

    概要 この記事ではAPI Blueprint形式でWeb APIの仕様をMarkdownっぽく記述しつつ、aglioで自動的にドキュメント化してみます。 インストール まずHomebrewでnode.jsをインストールして、npmからaglioのパッケージをインストールします。 (前準備)ダミーのWeb APIを用意する 前準備として、まずはドキュメントを書く対象となる適当なWeb APIを用意します。ここではサンプルとして、以下のサイトに掲載されているPythonのBottleというパッケージで書かれたダミーのRESTful APIを返すサーバを使ってみましょう。 Creating a RESTful Python API with Bottle - Fabrizio (Fritz) Stelluto このサイトのbottle/test2.pyは、最低限のCRUD操作が備わったWeb A

    API BlueprintでWeb APIのドキュメントを生成する - Qiita
    yag_ays
    yag_ays 2016/04/21
  • MongoDBでドキュメントのキー一覧を取得する&mongoexportでcsv形式で出力する - Qiita

    mongoexportでcsv形式の出力をするときには,-fまたは-fieldFileでどのキーを出力するかを選択する必要があるのだが,キーの数が多くなってくると指定が面倒になる.そこで,以下のようにしてコマンドからすべてのキーのリストを生成して,そのファイルから出力するキーを指定することにする.なお,ここではtestというデータベースのpostというコレクションを対象にしている.

    MongoDBでドキュメントのキー一覧を取得する&mongoexportでcsv形式で出力する - Qiita
    yag_ays
    yag_ays 2014/07/25