タグ

pythonに関するsh19910711のブックマーク (1,079)

  • PyG (PyTorch Geometric) で Graph Pooling Neural Network - Qiita

    グラフ構造を深層学習する PyG (PyTorch Geometric) を Google Colaboratory 上で使ってみました。今回は、Graph Pooling Neural Network を使うことがテーマです。題材として、化学情報学のメインテーマの1つである、分子構造から物性を予測する問題を解いてみます。 PyG (PyTorch Geometric) インストール PyG (PyTorch Geometric) のレポジトリは https://github.com/pyg-team/pytorch_geometric にあります。また、コードはチュートリアルドキュメント https://pytorch-geometric.readthedocs.io/en/latest/index.html を参考にしています。 import os import torch torch

    PyG (PyTorch Geometric) で Graph Pooling Neural Network - Qiita
    sh19910711
    sh19910711 2024/06/11
    "torch_geometric.transforms.ToDense を用いて transform することで、全ての大きさの分子グラフを max_nodes x max_nodes のサイズの隣接行列として表現 / Graph Pooling を使った GNN で、graph property を目的変数とした分類問題・回帰問題" 2022
  • SymPy で量子プログラミングを体験してみましょう - Qiita

    はじめまして、こんにちは。OpenQLプロジェクト1の中のひと、です。 記事の対象は、次のような方を想定しております。 量子コンピューターや量子プログラミング2に興味がある方 基礎的なPythonの知識がある方 数式に極度のアレルギーのない方 量子コンピューターの仕組みや計算方法をなんとなく知っている方 (記事の前に、@tsujishin さんの「量子情報科学序論 IBM Qを動かして学ぶ量子コンピュータ」を事前に読んで頂くと、より理解が深まると思います) それでは、始めましょう。よろしくお願いします。 数学・科学計算には欠かせない!?「Mathematica」 皆さんは、Mathematica というソフトウェアをご存知でしょうか。 例えば、何か計算式をプログラムで扱おうとしたときに、一般的なプログラムが数値計算を得意としているのに対して、$x$が含まれる関数式のまま扱うことができる

    SymPy で量子プログラミングを体験してみましょう - Qiita
    sh19910711
    sh19910711 2024/06/11
    "sympy: 数学計算に便利な基礎的な利用用途とは別に、様々な応用計算が標準で含まれ / シミュレーション上の理論的な計算では、qapplyまで行えば、目的が達成することが多い / 観測のためのメソッドも備わって" 2017
  • Python x SQLite3 x sqlite-vec で近似近傍探索をやろうと思ったが...

    2024-06-06 全文検索エンジン Bleve で日形態素解析をおこなう で bleze x kagome が気になってやろうとしたが、どうせなら一捻りしたいなと思い、Goの全文検索ライブラリである blevesearch の最新リリースを眺めていると https://github.com/blevesearch/bleve/releases/tag/v2.4.0 v0.2.4 からvector serach が可能に backend は faiss。 テンションが上ったので、最初は、kagome x blevesearch x ANN の構成で vector indexing, query のベクトル化もGo 言語かつ検索サーバーを運用しないで完結する構成による近似近傍探索をやろうと思っていた。。。が、文章をベクトル化するお手軽な方法(Python だとが Go で見つけられなか

    Python x SQLite3 x sqlite-vec で近似近傍探索をやろうと思ったが...
    sh19910711
    sh19910711 2024/06/10
    "sqlite-vss: 問題を抱えていたらしく、それを解決するために同じ開発者によって後継が作られ (sqlite-vec) / blevesearch: Goの全文検索ライブラリ + v0.2.4 からvector serach が可能に backend は faiss"
  • LangChainの新機能「langgraph-engineer」:Agentを作成するためのAgentを作る - Qiita

    最近、GithubでLangGraph(LangChainが提供するエージェント構築用フレームワーク)のアップデートを確認していたところ、LangChainの開発チームが新機能の開発を進めていることに気づきました。現在はまだテスト段階かもしれませんが、試用コードなどはすでに整っているようです。この新機能は非常に興味深いので、共有したいと思います。 名前は⇩の「langgraph-engineer」です。 現時点ではまだスター数が数十個と少ないため、まだテスト中だと思われます。この機能を簡単に説明すると、agentを作成するためのagentを作るというものです。非常に革新的なアイデアだと思います。 LangChainの開発チームが想定している処理フローは、概ね以下のようになっています まず、ユーザーがagentのワークフローを手書きで作ります。その後、マルチモーダルモデルを使用して手書きの結

    LangChainの新機能「langgraph-engineer」:Agentを作成するためのAgentを作る - Qiita
    sh19910711
    sh19910711 2024/06/10
    "langgraph-engineer: agentを作成するためのagent / ユーザーがagentのワークフローを手書き + マルチモーダルモデルを使用して手書きの結果を認識 + 抽出した情報をもとにLangGraphのコードを生成"
  • LightFMで前処理・学習から予測・評価・潜在表現の取得までやってみる - 宇宙 日本 世田谷 機械学習

    ロゴがかっこいい、、、 概要 こちらのLightFMを実際にMovieLensのデータを使って一通り動かしてみます。 github.com 元になっている論文はこちらです。 arxiv.org 細かい論文の内容に関しては以下の記事でまとめています。 nnkkmto.hatenablog.com また、動かすことが目的であるため精度に関してはこの記事では考えません。 概要 論文概要 流れ 使用するデータセット 使用したスクリプト lightfm.data.Datasetを用いた前処理 概要 dataframeからの変換 encoderの生成 datasetのビルド mappingの取得 連続値を入力とする場合 学習 潜在表現の取得 各種featureの潜在表現 user, itemの潜在表現 予測 既存user, itemに対する予測 新規user, itemに対する予測 predict_r

    LightFMで前処理・学習から予測・評価・潜在表現の取得までやってみる - 宇宙 日本 世田谷 機械学習
    sh19910711
    sh19910711 2024/06/10
    "LightFM: 手軽にFactorization Machines系モデルを使える + user, itemのメタデータに関してもMatrix Factorizationのように類似度を元にした潜在表現の学習 + cold-start問題に対処" 2020
  • 画像から3次元復元しよう!バンドル調整をpythonで実装してみる - Qiita

    はじめに バンドル調整(Bundle Adjustment)は、複数のカメラからの画像データを使用して、カメラの位置と姿勢と三次元点の位置を同時に最適化する手法です。最初の論文は、1958年にD. C. Brownによって提案された1、かなり長い歴史を持つ技術です。 当時はアメリカ空軍が航空写真からの環境復元するための研究でしたが、近年では、visual-SLAMやSfMの普及とともに、より身近なところで使われるようになりました。 有名なvisual-SLAM(例:orb-slam2やVINS-Mono)は、ceresやgtsam、g2oなどのグラフ最適化ライブラリを利用してバンドル調整問題を解いています。しかし、内部の原理をちゃんと理解しないと、課題の改善ができない、独自の研究や発展につながらない可能性が高いです。 この記事では、初心者に向けバンドル調整の理論の紹介と式の導出を行いながら

    画像から3次元復元しよう!バンドル調整をpythonで実装してみる - Qiita
    sh19910711
    sh19910711 2024/06/10
    "Bundle Adjustment: 1958年にD. C. Brownによって提案 + 複数のカメラからの画像データを使用して、カメラの位置と姿勢と三次元点の位置を同時に最適化 / アメリカ空軍が航空写真からの環境復元するための研究"
  • 再帰型強化学習 - Pythonと機械学習

    目次 目次 はじめに 再帰型強化学習のアルゴリズム Pythonで実装してみる 検証結果 シャープレシオの推移 過去の期間Tでの学習結果 未来の期間Tでの取引シミュレーション結果 はじめに こちらのブログで紹介されている、再帰型強化学習を使ってFXトレードをしてみるという記事が面白そうだったので試してみることにしました。 再帰型強化学習について知識はゼロですが、取り敢えずやってみるというのが大事じゃないかと思います。 強化学習とは機械学習の一種で、エージェントがアクションを起こして、そのアクションによって報酬をもらえるというような仕組みみたいで、各アクションでもらえる報酬を最大化するように学習を実施するという物らしいです。 更に再帰型なので、なんかよくわからなくてすごそうです。英語(Recurrent Reinforcement Learning)の頭文字をとってRRLと呼ばれてるみたいで

    sh19910711
    sh19910711 2024/06/10
    "𝐹𝑡は𝑡より前の𝑀個の各時刻の価格変動𝑟𝑡と一つ前の時刻のアクション𝐹𝑡−1に適当な重み𝑤をかけて足し合わせた後ハイパブリックタンジェントの出力 / 𝐹𝑡−1が必要なところが再帰型" 2017
  • PythonのcProfileモジュールを使ってプロファイル取得とSnakeVizによる可視化 - 偏った言語信者の垂れ流し

    先日のPyCon Kyushu Kagoshima 2024で登壇したcProfileの資料の内容から抜粋しつつ、cProifleの使い方について少し書いてみます。 tokibito.hatenablog.com Pythonのプロファイルとは Pythonの実行に関する統計情報 関数がどれだけ呼ばれたか 実行時間どのぐらいかかったか Pythonでは標準モジュールのcProfileを使うと、プロファイルを取得できます。 プロファイルを取得する対象のコード read_file.py: import datetime import timeit DATA_FILE = "data.jsonl" def main(): """ファイルの行数をカウントするスクリプト""" print("start:", datetime.datetime.now()) result = 0 with open(

    PythonのcProfileモジュールを使ってプロファイル取得とSnakeVizによる可視化 - 偏った言語信者の垂れ流し
    sh19910711
    sh19910711 2024/06/09
    "cProfileで取得したプロファイル情報は、標準モジュールのpstatsでテキストとして読むことができますが、SnakeVizを使うとウェブブラウザ上でグラフ表示、データのソートなどができて簡単"
  • torchdataの使い方:datapipeの扱い方から物体検出データセットを読み込むまで - Qiita

    1. torchdataとは torchdataとは,従来のdatasetを拡張するpytorchのモジュールです. torchdata is a library of common modular data loading primitives for easily constructing flexible and performant data pipelines. 2022/Aug時点で,まだベータ段階なのでAPIは今後変更がありますが,以下ではあまり変化がないと思われる利用方法を紹介します. インストールはpipから. Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/ Collecting torchdata Downloading

    torchdataの使い方:datapipeの扱い方から物体検出データセットを読み込むまで - Qiita
    sh19910711
    sh19910711 2024/06/09
    "torchdata: 保存してあるデータ(やweb上のデータ)をパイプラインの起点として終点であるデータローダーへと処理をつなげる / datapipeをつなげていくだけで処理のパイプラインができる" 2022
  • pyannote.audioを使った話者ダイアライゼーションをオフラインで動かす方法 | DevelopersIO

    こんちには。 データアナリティクス事業部 インテグレーション部 機械学習チームの中村です。 今回はpyannote.audioを使った話者ダイアライゼーションをオフラインで動かす方法を見ていこうと思います。 以下の記事のオフライン版となります。 こちらを以下の用途を目的としてオフラインモデルとして読み込めるように検討していきます ネットワーク的に閉じた環境でジョブを実行したい 推論時に毎回ダウンロードすることなしに高速に処理を開始できるようにしたい pyannote.audioとは pyannote.audioとは話者ダイアライゼーションを行うライブラリです。 GitHubは以下となります。 ベースのフレームワークはPyTorchとなっており、end-to-endの話者ダイアライゼーションを実現します。 話者ダイアライゼーションとは、どこの時間でどの話者がしゃべったのか、話者認識をせずに

    pyannote.audioを使った話者ダイアライゼーションをオフラインで動かす方法 | DevelopersIO
    sh19910711
    sh19910711 2024/06/09
    "speaker diarization: どこの時間でどの話者がしゃべったのか、話者認識をせずに実施する技術 / pyannote: ベースのフレームワークはPyTorch + end-to-endの話者ダイアライゼーションを実現" 2023
  • 【Python】定数管理のための、値の追加・変更を不可にするクラスを実装する - yiskw note

    概要 機械学習の実験を回していると、しばしば複数の定数を管理したくなることがあります。(例えば、実験を回すマシンごとのデータセットのパスなど) Pythonでは、他のプログラミング言語のconstのような定数がサポートされていません。 PEP8の慣例に従って、大文字とアンダースコアで命名して定数を表す変数を作成したとしても、 それらは基的に外部から書き換え可能で、意図しない変数の変更が起きてしまいます。 そこで今回は、Pythonで定数を管理するためのクラスを作成してみました。 その定数はクラス変数として管理され、クラス変数の追加や変更はできないようになっております。 そのため、定数の意図しない書き換えは発生せず、バグを防ぐことが可能です。 もし他に良い方法があれば、コメントにて教えていただけると幸いです。 概要 実装の方針 実装 dataclassとの違い 参考 実装の方針 定数を管理

    【Python】定数管理のための、値の追加・変更を不可にするクラスを実装する - yiskw note
    sh19910711
    sh19910711 2024/06/09
    "実験を回していると、しばしば複数の定数を管理したくなる / PEP8の慣例に従って、大文字とアンダースコアで命名して定数を表す変数を作成したとしても、 それらは基本的に外部から書き換え可能 / __setattr__を上書き" 2023
  • Scikit-learn でロジスティック回帰(確率予測編) - Qiita

    はじめに ロジスティック回帰は、説明変数の情報にもとづいて データがどのクラスに属するかを予測・分類する(例:ある顧客が商品を買うか買わないかを識別する) 注目している出来事が発生する確率を予測する(例:ある顧客が何%の確率で商品を買うか予測する) ために利用されるモデルです。 この記事では、Scikit-learnライブラリを使い、ロジスティック回帰により確率を予測する方法を備忘録として書いておきます。 Scikit-learn について Scikit-learnは、Python機械学習ライブラリの一つです。 公式ドキュメント:http://scikit-learn.org/stable/index.html ロジスティック回帰について ロジスティック回帰は、確率(例:機器の故障率)を予測するためのアルゴリズムです。機械学習系の文献では、分類のためのアルゴリズムとして紹介されていること

    Scikit-learn でロジスティック回帰(確率予測編) - Qiita
    sh19910711
    sh19910711 2024/06/09
    "ロジスティック回帰: 対数オッズを説明変数 𝑥𝑖 の線形和で表現 / オッズ: 予測したいこと(正事象)の確率を 𝑝 としたとき、オッズは 𝑝/(1−𝑝) と書く + 正事象の起こりやすさ" 2019
  • Pythonのハッシュ衝突攻撃の考察3: setの理解と効率的な衝突の実践(anti-setの実践) - Qiita

    振り返り1: C++のハッシュ法 C++のunordered_set/unordered_mapでは現在のデータ構造のサイズを基にしたlinked-listを指すテーブルを持ちます。まず、入力値(key)のハッシュを得て、modを取りindexを定めます。各indexに対応するlinked-listの各要素はkeyを持ち、存在を管理・値を格納します。これがハッシュ法です。 入力がランダムの場合、indexはうまくばらけて各linked-listは浅い状態になります。テーブルのサイズを動的に変化させることで、平均計算量$O(1)$でのアクセスが可能です。しかし、毎回同じindexとなるような値(key)をN個入力すると特定のlinked-listの深さをNとすることが可能です。C++20であれば85229ul * iという値を$2e5$個入るようにすればanti-unordered_set/

    Pythonのハッシュ衝突攻撃の考察3: setの理解と効率的な衝突の実践(anti-setの実践) - Qiita
    sh19910711
    sh19910711 2024/06/09
    "Pythonのsetの各アクセスは期待時間計算量𝑂(1)ですが、これを𝑂(𝑁)とするような入力 / 衝突後の解決の実装はランダム探索だけを用いるdictと異なり二重ハッシュのランダム探索+線形探索でindの探索が行われ" 2023
  • plotly dashの内部構造

    pythonのみでデータ分析のアプリケーションを実装することが出来るwebフレームワークの1つplotly dashの裏側がどうなっているのか githubにある次のソースコードを解析してみました。(※Dash Enterpriseのコードではありません) streamlitと比較して、パフォーマンス・データフォーマットの違いについて触れています。 streamlitの仕組みについては、こちらを参照ください。 レイアウトの初期化について dashの画面レイアウトでは、dashのコンポーネントを使うことで、javascript/cssのコードを書かずにラップされたReactのコンポーネントを使って実装出来るようになります。 その中にpythonで編集した値の埋め込みを行うことが出来ます。 簡単なサンプルの例として以下に示します。 app = Dash() app.layout = [ htm

    plotly dashの内部構造
    sh19910711
    sh19910711 2024/06/09
    "データがnumpy, pandas, PIL.image, plotly figureオブジェクトなどの場合は、JSONに文字列としてシリアライズ / streamlitではwebsocketでprotbuf+apache arrowでdataframeを扱っていたり"
  • Pandas逆引きクックブック - MyEnigma

    pandasクックブック 目次 目次 はじめに DataFrameのメモリサイズや、各列の型などを確認する。 DataFrameの一部をカテゴリデータに変換する 複数の条件式を使って、DataFrameの一部を抽出する MultiIndexで特定のレベルのindexを取得する Pandasのapplyを高速化する applyにプログレスバーをつけたい。 参考資料 MyEnigma Supporters はじめに 大量のデータを処理する時にPythonのPandasは 非常に便利なライブラリですが、 myenigma.hatenablog.com 久しぶりにPandasを使うと、 このようなことをしたい時にどうすればいいんだっけと 毎回調べることになるので、自分がよく調べ直す事柄をメモしておきます。 DataFrameのメモリサイズや、各列の型などを確認する。 df.info()関数を使うと

    Pandas逆引きクックブック - MyEnigma
    sh19910711
    sh19910711 2024/06/09
    "progress_apply: プログレスバー / applyを高速化: 新しい列を計算したい場合は、applyを使うのが普通ですが、下記のツイートのようにnp.vectorizeを使うほうが、高速で、読みやすい" 2022
  • ところでSFT Trainerに渡したdatasetってどうなるの?

    年度末いかがお過ごしですか。(時候の挨拶) 社内で「ロリババアといえば」みたいな話をしていたのですが、真っ先に「ゆのは」を思い浮かべた自分は限界ヲタク。 冬になるとイチゴサンデー7つくらいべないといけない謎の焦燥感に駆られる皆さん、こんにちは。 SFT Trainer内のdatasetの取り扱い どうも、限界ヲタクの@ken11です。この季節になるとローソンで流れるone more time, one more chanceで発作を起こします。嘘です。 今回は唐突ですがSFT Trainerの話、特にdatasetの話をしたいと思います。 Dataset format support 公式ドキュメントを見ると、SFT TrainerにはDataset format supportというのがあります。 これはなにかというと、「ある特定のフォーマットでdatasetを渡してくれたらよしなにや

    ところでSFT Trainerに渡したdatasetってどうなるの?
    sh19910711
    sh19910711 2024/06/08
    "SFTTrainer: 大きく異なる2つのフォーマットがサポート + formatting_func という機能もあり + 好きなフォーマッターでいい感じにできる / ドキュメントの内容だけだと判断できないこともたくさんある"
  • 画像データの切り抜きをCNNとopenCVで自動化する - ゼロから始める機械学習

    概要 画像分類では認識したい対象だけのクリーンな画像が欲しいですが、提供データには不要なオブジェクトが多く写ります。また、分類対象が小さくしか写っていないこともあります。 大量の画像データを手動で切り抜くには時間がかかるので、必要部分のみ切り抜く処理をCNNopenCVで教師データありで自動化します。 目的 Kaggleのintel子宮頚部癌スクリーニングコンペに参加し、22位でした。 Intel & MobileODT Cervical Cancer Screening | Kaggle このコンペでは4000pxを超える高解像度のデータが8000枚ほど提供されました。 画像は専用の医療機器で撮ったものからデジカメで撮ったようなものまで、対象の形状や色も違い、医療器具の映り込みもありました。 CNNでの画像分類はメモリの制約上、224pxや299pxなど縮小したものを利用します。 認識

    画像データの切り抜きをCNNとopenCVで自動化する - ゼロから始める機械学習
    sh19910711
    sh19910711 2024/06/08
    "画像分類では認識したい対象だけのクリーンな画像が欲しい / ResNetで特徴を抽出して始点のx,yとlengthを推測する / 縮小した画像でx,y,lengthを求め、元画像と縮小画像の比率に応じてopenCVで切り抜けば完了" 2017
  • プロンプトを見て、LangSmithのevaluatorを理解する

    はじめに LangSmith langchain.com が提供する LLM アプリ開発のプラットフォームです 2024/02/15 に GA した、今ホットなツールです LangSmith では evaluator を指定することで、様々な評価指標を出力することができます from langsmith import Client from langchain.smith import RunEvalConfig, run_on_dataset evaluation_config = RunEvalConfig( # ここで指定 evaluators=[ "qa", "context_qa", "cot_qa", ] ) client = Client() run_on_dataset( dataset_name="<dataset_name>", llm_or_chain_factory

    プロンプトを見て、LangSmithのevaluatorを理解する
    sh19910711
    sh19910711 2024/06/08
    "LangSmith: langchain が提供する LLM アプリ開発のプラットフォーム + evaluator を指定することで、様々な評価指標を出力 / そのほとんどが LLM 自身による評価 + 「このように評価して」とプロンプトで指示"
  • llama-indexを使って自分と同じ考えを持つAIを作りたい

    はじめに 人の思考プロセスや考え方は、その人が触れてきた情報や経験によって大きく影響されます。逆に言えば、その人が影響を受けた考え方や経験を知ることができれば、その人の思考プロセスを理解できるはずです。 記事ではこのような仮定のもと、私と同じような考えを持つAIを作るために、自分が普段使っているsupernotesというメモアプリに保存されている大量のメモを使ってRetrieval Argumented Generation (RAG)を実装し、どんな受け答えをしてくれるのかを試してみました。 supernotes supernotesは私が愛用しているメモアプリです。 私は、読んだの中で印象に残った考え方や、思い浮かんだアイデアなどをsupernotesにメモしています。そのため、supernotesには私の思考を形成する情報が保存されていると言えます。 (supernotesは素晴

    llama-indexを使って自分と同じ考えを持つAIを作りたい
    sh19910711
    sh19910711 2024/06/08
    "メモアプリに保存されている大量のメモ + llama-index / 文書をベクトルに変換し、ベクトルデータベースのqdrantに保存 / 哲学・価値観に関するメモには自分の考えを書いておいた方が良い / vector_index.as_query_engine()"
  • dplyr のアレを Pandas でやる - Qiita

    Pandas と dplyr のより網羅的な対比は、既に記事が出ています。 私が参考にしたものをこの記事の末尾で紹介していますので、詳しくはそちらをご覧ください 。 前置き|テーブルのキーの扱い方の違い Pandas を使い始める前に理解すべきこととして、dplyr と Pandas ではテーブルのキーの扱い方に大きな違いがあります。この違いを認識していなかった私はかなり苦戦しました…… 以下の2点を理解して (覚悟して?) おくと、学習コストが多少減るのではないでしょうか。 Pandas ではテーブルのキーが Index という別オブジェクトで管理されていること Pandas ではキーや列名に階層構造を持たせられること dplyr におけるキーの扱い R のデータフレームにはテーブルのキーを表す方法として row names という仕組みが用意されています。しかし、dplyr (が利用し

    dplyr のアレを Pandas でやる - Qiita
    sh19910711
    sh19910711 2024/06/08
    "melt メソッドを使えば tidyr::gather と同等の操作を実現 / tidyr::spread に対応するメソッドが Pandas には存在しないため、縦持ち横持ちの往復を SQL-style で貫き通すことができません" 2018