LeetCode

1799. Maximize Score After N Operations

Dailyで出てきたHardの問題。 解説を見るとビットマスキングとDPを使っていて難しい。 もっと単純に、素直に解けたので備忘録。もちろん最適解ではない。 成約を見ると以下の通りである。 1 <= n <= 7nums.length ==...
Deep Learning

TFRecordsでmodel.fitする時にメモリリークが起きてメモリ使用量が増え続けてしまう

大量のTFRecordsを使い、tf.dataでモデルの訓練をしていた際、メモリの使用量が増え続け、Out of Memoryになってしまっていた。 仮想メモリ(スワップ)を3TB程度用意してみたが、スワップも食い続けてしまったため、ハード...
Python

メモリに乗り切らない大量のデータの平均値と標準偏差をWelfordアルゴリズムで逐次計算する

Kaggleに取り組んでいた時、大量のデータセットが与えられた。 一般的に、ニューラルネットに入力するデータは標準化している方がいいと言われているが、データが大量にあってメモリに乗り切らず、sklearn.preprocessing.Sta...
Python

PyQt5とOpenCVを同時に使おうとしてエラー If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config

PyQt5のアプリケーションを弄っていた時に、cv2.imshow()をしようとしたら表題のエラー。 If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config,...
LeetCode

LeetCode Biweekly Contest 97の解法

問題ページはこちら。 2553. Separate the Digits in an Array 与えられた数値を1桁ずつ返す問題。 整数で与えられるので、文字列として解釈して1文字ずつ解を得ればOK。 class Solution: de...
LeetCode

907. Sum of Subarray Minimums

mediumとは思えない難しさだったので備忘録。 与えられた配列からすべての部分列を作り、各部分列の最小値の合計を求める問題。 Input: arr = Output: 17Explanation:Subarrays are , , , ,...
LeetCode

1235. Maximum Profit in Job Scheduling

daily challengeで出てきて難しかったので備忘録。 n個のjobのstartTime, endTime, profitが与えられ、スケジュールが重複しないように利益を最大化する問題。 全探索を考えた時、jobを選ぶ / 選ばない...
Prometheus

Prometheusのクエリに正規表現を使ってワイルドカードを実現する

Prometheusのクエリを書いていた時、共通するprefix / postfixを持つmetricsやjobを集計したくなり、ワイルドカードを使いたくなった。 Prometheusでワイルドカードを直接使う方法を見つけることができなかっ...
Deep Learning

GPUでfitしてCPUでpredictすることでTensorFlowのOOMを回避する

TensorFlowで大量の画像や巨大な配列をpredictするとメモリーリークが生じることが多い。 model.fitでは問題ないのに、model.predictになるとOOMになってしまう報告が散見する。 根本的な解決ではないが、pre...
Deep Learning

TensorFlowでscipyのsparse matrixを学習に使う

巨大な疎行列をmodel.fit()させようとした時、numpyのままだとメモリに乗り切らなかったため、scipyの疎行列でtf.kerasを使う方法がないか調べてみた。 まずは公式チュートリアルを見てみる。 TensorFlowは、 tf...