ひろこま Hack Log

プログラミングや機械学習などの知識を記録・共有します

Python

重複が起こらないようにランダムのIDを採番 [Python, Ruby]

重複が起こらないようにランダムのIDを採番 [Python, Ruby] IDをランダムにすると嬉しいこと 何かのシステムを作っていて、ユーザIDや商品IDなどをランダムにしたいことが結構ある。理由は大きく2つある。 IDが小さいとなんかダサい たとえば、あなたの作っ…

【Python】 存在しないkeyでdictにアクセスしたときNoneを返すようにする

【Python】 存在しないkeyでdictにアクセスしたときNoneを返すようにする getメソッドを使おう dictionary型のオブジェクトに対して、存在するkeyでアクセスしたときはそのvalueを返却してくれ、存在しないkeyでアクセスしたときはNoneを返してくれる関数で…

pythonで改行コード「^M」を除去する方法

^Mを削除する方法 「^M」を普通の改行に置換したい場合は some_text.replace('\r', '\n') 「^M」を空文字''に置換したい場合は some_text.replace('\r', '') (adsbygoogle = window.adsbygoogle || []).push({});

説明可能な人工知能「LIME」を使って初音ミクのイラストを分析してみた

説明可能な人工知能「LIME」を使って初音ミクのイラストを分析してみた 1. LIMEとは 論文はこちら https://arxiv.org/abs/1602.04938 任意の判定モデルに対して、何らかの結果が出たときに「なぜその結果が出たのか?」を説明できるツールです。 LIMEはLocal…

多重にimportするとModuleNotFoundError: No module named 'xxx' というエラーが出る

経緯 先日、 pythonでとあるモジュールを作ったのですが、そのモジュールを別のコードでインポートしたところ、 ModuleNotFoundError: No module named 'xxx' というエラーが発生しました。 実は、インポートしたモジュールの中で別のモジュールをインポート…

【2019年版】Ubuntu18.04 にChromeとSeleniumをインストール

Ubuntu18.04 にChromeとSeleniumをインストール UbuntuにSeleniumをインストールする手順 UbuntuでSeleniumを使えるようにするためには Chromeをインストール Chrome Driverをインストール Seleniumをインストール と3ステップを踏む必要があります。 ここで…

Pythonコードを自動でPEP8記法に変換する

Pythonコードを自動でPEP8記法に変換する PEP8とは Pythonのソースコードの書き方を定めたコーディング規約です。 世の中には色々なコーディング規約がありますが、PythonではPEP8が最もメジャーな記法です。 はじめに — pep8-ja 1.0 ドキュメント PEP8を守…

深層学習で扱うテンソルを3Dで可視化してみる

可視化されたCNNの中間層 目的 ― 可視化することでデバッグ効率を上げる 自作のニューラルネットワークモデルをデバッグしようと思ったとき、入力と出力結果だけしか見れないとブラックボックス的な解析しかできず辛いです。 中間層がどのような値を取ってい…

matplotlibで3次元配列を描画【Voxel使用】

3次元配列の描画 3次元配列を上図のように描画してみる matplotlibのvoxelという技を使います。これを使うと3次元配列(テンソル)を3D空間上に表示できます。 import colorsys import collections import numpy as np from matplotlib import pyplot as plt…

Pythonで任意の整数を色相に割り当てる

色相環 (wikipediaより引用) 色相環とは HSVカラーモデルとも言われます。赤、緑、青の色度で色を表現するRGBモデルの代わりに、色相(H)、彩度(S)、明度(V)の3値で表現するモデルです。 色相は、上手の円柱においてどの方角の色かを表します。彩度は色の鮮や…

pythonのloggingでSUCCESSレベルを追加

logging Pythonでログを出力する際にloggingを使っている方は多いと思います。loggingを使えば、単にログを書き出すだけではなくINFOやDEBUG、WARNING、ERROR、CRITICALといった「重要度のレベル」を添えてログを出力することができます。 また、どの程度の…

Pythonでハイフンやマイナスなど類似文字の正規化

類似文字の文字コード 類似文字問題 ハイフンとダッシュのように、別の文字ではあるが、見た目が全く同じ文字というものが存在しています。以下がその例です。 # ハイフンに見える文字と、その文字コード - 0x2d ‑ 0x2011 ‒ 0x2012 – 0x2013 - 0xff0d ─ 0x2…

M2DetをGoogle Colaboratoryで動かしてみた

最強の物体検出器M2Detを動かしてみた M2Detとは 2019年4月現在、最強の物体検出器と呼ばれているモデルです。2017〜2018年頃にSOTAだったYOLOやSSDを引き離し高い精度を叩き出しています。 多段階特徴ピラミッドネットワーク(MLFPN)と呼ばれる方法を提案…

Google Driveから巨大ファイルをダウンロードするコマンド

サイズの大きなファイルのダウンロードには確認画面がある 機械学習モデルや、動画ファイルなどサイズの大きなファイルを、他人のGoogle Driveからダウンロードしようとしたとき、上のような確認画面に遷移します。ダウンロードボタンをクリックすれば普通に…

illust2vecを使って類似イラストを検索する

類似画像検索 1. illust2vecとは 東北大学の齋藤真樹氏と東京大学の松井勇佑氏によって提案された「イラストの意味をベクトル化する」手法。 単語の意味をベクトル化するword2vecというものがありますが、それのイラスト版です。 ベクトル化することで、以下…

PythonでFlatten

PythonでFlatten Flattenとは 「入れ子になっているリスト」を「入れ子になっていないリスト」にすることです。 こんな感じです。 [1,[2,3]] → [1,2,3] [1,[2,[3]]] → [1,2,3] [1,[2,{'foo': 3}]] → [1,2,{'foo':3}] [1,[2,'foo']] → [1,2,'foo'] PythonでFl…

pythonで色付きのprintをする方法

色付きの出力をしよう ここでは、pythonで色付きの出力をする方法をご紹介します。 (adsbygoogle = window.adsbygoogle || []).push({}); 以下のような色付きprint関数cprintを作りました。 class PrintColor: END = '\033[0m' BLACK = '\033[30m' RED = '\0…

文字とUTF-8, UTF-16, SJIS, EUCの相互変換【Python】

UTF-8をはじめとする各種文字コードと実際の文字を相互変換する方法について説明します。 文字コードの対応表はこちらのサイトを参考にしました。なお、UTF-16はUTF-16ビッグエンディアンを表しています。 ash.jp (adsbygoogle = window.adsbygoogle || []).…

Pythonのリストでキューを実現する方法

画像出典:https://1000ya.isis.ne.jp/1532.html 単純な方法(appendとpop) Pythonのリストを使ってキューを実現するにはどうすれば良いでしょうか? 単純な方法として、リストのappendとpopを使う方法が考えられます。 append(x)でリストの末尾にxを追加、…

GANを使って簡単に架空アイドル画像を自動生成(Progressive Growing of GANs)

Artificial Idol この記事で紹介する方法で、このような画像が作れるようになります。 (adsbygoogle = window.adsbygoogle || []).push({}); 最近趣味でやってる画像生成系のDNNについて簡単にレポートします。 1. Progressive Growing of GANsとは Paperは…

Koma Hirokazu 's Hacklog ―― Copyright © 2018 Koma Hirokazu