はじめに インターンしている小林です.この記事では,DRF(Djangoのいい感じのフレームワーク)を使って,APIを作るまで行います.記事は二編構成とし,一編はDRFによるAPI作成,二編はNuxtを用いてユーザが実際に入力することを想定してフロント作成します.具体的には,PyTorchのresnetを用いて,入力フォームから受け付けられた画像を推論して上位10位までの結果を表示させます.一編では,詳細な機械学習のアルゴリズムは説明せずに,APIを作る工程に重きを向けます.読者の対象はDRFを初めたての人が対象であり,機械学習の画像処理をある程度把握している人が対象となります. 構築したAPIは以下のような感じになります. 今回作るAPI画面 結果で返しているのはresnet-18に入力した画像を推論させ,確率値が高い上位10個を表示させています.用いてるモデルはImageNetの学習済
TL;DR 想定する状況 numpy がシステムの pip3 経由だと pip3 install numpy で問題なく入るのに poetry 経由で poetry add numpy するとエラーが出てしまう 解決案 poetry run pip install numpy を叩いて、poetry の作った仮想環境の中で pip3 経由で numpy を半ば無理矢理放り込む poetry add numpy を叩いて、poetry に numpy を認識させ、pyproject.toml と poetry.lock を更新する 補足:手元の環境でこのステップを実行したのは2021年1月20日です。 解決案その2(2021年2月18日追記) どうも poetry のコンフィグの1つ experimental.new-installer が悪さをしているらしく、 として、並列にパッケージをイ
この記事はZeals Advent Calendar2020の3日目の記事です。見ていただきありがとうございます! 今回はPipenvの代替やら色々言われているPoetryをDocker上で使用する方法を書いていきます。 また、この記事はほとんど公式ドキュメントやGithubリポジトリのissueを参考にしています。正確な情報を知りたいのであれば、ぜひ公式ドキュメントを読んでみてください。 https://python-poetry.org/ 記事を書いたときの動作環境 MacOS Big Sur 11.0.1 Docker for Mac 2.5.0.1 この記事の流れ 今回はこのような流れで開発していきます。 Poetryのインストール方法 Poetryの設定 Poetryの環境を作成 pyproject.tomlへのパッケージ追加 DockerFileを書く Poetryのインストー
Photo by Cesar Carlevarino Aragon on Unsplash Introduction Machine learning models are exciting and powerful, but they aren’t very useful by themselves. Once a model is complete, it likely has to be deployed before it can deliver any sort of value. As well, being able to deploy a preliminary model or a prototype to get feedback from other stakeholders is extremely useful. Recently, there has been
はじめに 前提知識 導入 pytest moto 状況設定 テスト対象のコード テストメソッドを書く フィクスチャーを書く moto だ…! テストを実行してみる おまけ まとめ 参考 はじめに こんにちは、技術4課の保田(ほだ)です。 皆様は現在話題沸騰中の映画 TENET (テネット)をもう観に行かれましたでしょうか?最高に最高ですので、皆様も三密にご注意のうえ是非とも観ていただきたいです。そして考察を語り合いましょう。 というわけで今日は pytest と moto で優勝していきたいと思います。 具体的には DynamoDB への操作を moto でモックして、 pytest で単体テストするサンプルをご紹介します。 前提知識 文章が無限に増えることは避けたいため、以下の知識をお持ちのことを前提とさせていただきます。 Python (の基本的な書き方) boto3 単体テストの概念
sqlcommenter Attach SQL comments to correlate user code in ORMs and SQL drivers with SQL statements sqlcommenter is a suite of middlewares/plugins that enable your ORMs to augment SQL statements before execution, with comments containing information about the code that caused its execution. This helps in easily correlating slow performance with source code and giving insights into backend database
最近、行事の当番表を作る機会がありました。 行事の回数や当番対象の人数がそれなりだったこと、「今日の当番は何でこの組み合わせなの?」と質問された時に「プログラムが勝手にやりました」と答えたかったことから、プログラムを作って解決することにしました。 目次 環境 ランダムな組み合わせ編 実装 テスト 組合せ最適化編 前置き 目的関数と制約条件 実装 全体像 個別に見る テスト テストデータ作成 テストコード ソースコード 環境 Python 3.9.1 ortoolpy 0.2.38 pandas 1.2.0 numpy 1.19.5 openpyxl 3.0.6 Excelへ出力する時に使用 ランダムな組み合わせ編 実装 当番をする人の組み合わせは自由とのことでした。 その他の条件を聞いたところ、以下でした。 行事は18回 一行事あたり3名の当番が必要 一人1回当番をすれば良い そこで、上記
リンク 目次 目次 はじめに PythonのデフォルトのUnitTestsではなくpytestを使うべき7つの理由 1. クラスを作らずにシンプルな関数でテスト関数を作ることができる。 2. 様々なassert関数を覚えなくて良い 3. テストが失敗した理由がわかりやすい 4. テストの検索と実行が高機能 (auto discovery) 5. 様々なプラグインが公開されており、簡単に機能追加できる 6. UnitTestsで作成されたテストも実行できる 7. テストの実行時間のランキングを簡単に作成してくれる 便利なコマンドライン引数表 PythonのIDEとpytestの連携 参考資料 MyEnigma Supporters はじめに これまで、自分はPythonのユニットテストには、 PythonのデフォルトのUnitTestsを使っていましたが、 docs.python.org m
前の、ipv6 版です、 ip アドレスを計算を簡便にするライブラリがあったので使ってみることにした。 ライブラリを読み込む インストールする。 $ pip install netaddr 使う準備をする。 from netaddr import * v4/ v6 ともに同じライブラリで扱うことが出来ます。 ip6アドレス(ネットマスク含む)を扱う。 サブネットマスク表記を含む場合は IPNetwork を使う。 >>> ip = IPNetwork('fdc2:be69:2aeb:bd6c::1/64') >>> ip.ip IPAddress('fdc2:be69:2aeb:bd6c::1') >>> ip.network IPAddress('fdc2:be69:2aeb:bd6c::') >>> ip.netmask IPAddress('ffff:ffff:ffff:ffff::
なお、distrolessのイメージは2種類(3通りの名前)がありますが、Python 3.5はバグ修正はせず、セキュリティ修正のみでサポート期限が2020/9/13というステータスなので、本エントリーでは3.7の方のみを扱います。 gcr.io/distroless/python3: Python 3.5.3 gcr.io/distroless/python3-debian9: Python 3.5.3(上のイメージと同一) gcr.io/distroless/python3-debian10: Python 3.7.3 一応サンプル等もありますが、どれも1ファイルで構成されたサンプルスクリプトばかりです。前回のsite-packagesにコピーする方法を軽く試したところうまく動かず、シェルもpipもensurepipもないため、ビルドイメージにすることもできません。いろいろ調べた結果、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く