ICML2018読み会に参加しました

DeNA主催のICML2018読み会に参加してきました(https://connpass.com/event/92705/

感想を3行でまとめると

・GANが大人気

・NAS(neural architecture search)も人気

・パラメータ黒魔術な研究がちょいちょいある


渋谷ヒカリエのDeNA様のオフィスで開催

 


特に気になった発表が2つ、1つ目はコチラ

Learning Semantic Representations for Unsupervised Domain Adaptation

 

Domain Adaptationの手法で、Source-DomainのClassificationのLOSSや、抽出した特徴量に対するAdversarial Lossなどを用いるあたりは従来通りですが、異なるドメインの同じクラス同士で重心が似通うようにLOSS関数を追加した点がキーアイデアです。

が、各LOSSについて学習する順番や、学習する量など、ハイパーパラメータがむっちゃ重要なのでは?と思って質問してみたら、やはり想像通りというか、再現実装をしているけども思い通りには行っていないとのこと。

やはりちょっと黒魔術の香りがしますね。

あと、重心を近づけるという話でしたが、クラス数が多くなると提案手法の有効性が弱まるのではと思いました。これについてもディスカッションしましたが、論文では明確な実験検証は特になかったのでクローズ。

 

 


もう1件がコチラ

Efficient Neural Architecture Search via Parameters Sharing

 

Neural Networkを生成するNeural Networkの話ですね。もともとはNeural Architecture Search with reinforcement learning(NAS)という手法で、複数種類の異なる構造を持つネットワークを量産してはどの構造が最適なのか探索していくという手法で、計算時間が膨大過ぎて、それを解消する方向で検証が進んできたというものです。

NASについてはコチラに自分でまとめた資料があります、奇しくもちょうど私も勉強中でした。。。

 

これ、Controllerについて大きな誤解をしていたんですが、INPUTは無しで、学習可能なパラメータとして用意されているんですね。

そしてネットワーク構造を決める確率分布がLSTMから決定論的に算出されて、算出された分布から確率論的にネットワークを量産するという仕組みでした。

私はてっきりGANのようにNoiseをINPUTするものとばかり…

なぜ入力をランダムにするのではなく、確率分布に基づいてネットワークを量産するのかというと、後者の方が学習した結果「コレがよさそうだ」と思われる構造を中心に、近い構造を持つ亜種が量産されるからです。ランダムに生成して期待外れのネットワークが生成されるよりも遥かに探索が効率的です。

 

 

こういう質疑応答ができるのが勉強会のありがたいところですね。「聞くは一時の恥聞かぬは一生の恥」です。質問してよかった。

 


普段は慣れない音声合成の研究論文も紹介して頂き、後から気になった点をTwitterで質問させて頂きました。

 

 

国際線で忘れ物をしたときはどうする?日本までの郵送費は?

こんばんは、ロードローラーです。本日は国際線で忘れ物をしたときの対応をまとめます。先に結論を言うとちゃんと日本まで届けてくれました。

他の記事に書きましたが今月はICML@Stockholmへ参加してきました。日本からスウェーデンに向かう場合、直行便ではなくヘルシンキ乗換が多いです。私もヘルシンキ乗換でストックホルムに到着したのですが、そのときに座席のポケットにタブレットを残したまま飛行機を降りてしまったのです。


気付いた時点で航空会社の係員に相談

私の場合、スーツケースを受け取った段階、つまり幸いにも空港を離れる前に気づきました。空港にはだいたい窓口があるので事情説明に行きます。

ただし、すぐには見つかりません。慌ただしく機内入替などがされますし、気づいた乗務員さんが回収して入れ違いとなる場合があります。私の場合も「There are not tablet…」と言われました。

「そんなはずない、ちゃんと探してくださいよ!」という気持ちにもなりますが、今の時点で既にそこにないのは事実。その場は一旦あきらめました。


忘れ物の専用窓口に電話(急ぎ)

私が利用したのはFinnairでしたが、忘れ物専用の問い合わせ窓口があります。結果的にはこちらへ早く連絡したことが、今回無事にタブレットを取り戻せたことに繋がりました。

ただし電話はもちろん英語です、国際電話です。日本の窓口や、日本の代理店に依頼をしようとも考えましたが、日本~ヘルシンキの便ならともかく、ヘルシンキ~ストックホルムの便、つまり発着点どちらも日本でない場合は管轄外とのことでした。

電話相手は慣れている様子で、非常にゆっくり丁寧な英語で話してくれるので安心してください。たぶん僕みたいな人が多いんでしょうね。忘れ物の特徴、便名、座席、連絡先(電話番号とメールアドレス)を尋ねられます


照会には時間がかかる

窓口での電話が終わると受付完了のメールがすぐに届きます。あとは粘り強く待ちましょう。

私の場合は2日ほどたって「もう無理かな…」と思いましたが、3日目で「見つかった!」とメールが来ました。


取りに行くか、郵送してもらうか選択

「指定場所まで受け取りに行くか、自宅に郵送するか、選んでくれ」という趣旨がメールには書いています。ちなみにどっちを選択しても有料です。私の場合はヘルシンキまで取りに行くのは現実的ではなかったのでもちろん郵送を選択。

郵送を選択する場合は「料金を見積もって請求書を発行するのでとりあえず電話くれ」という趣旨の記載があります。また英語で電話せなあかんのかと思いつつTELします。


クレジットカードで郵送費を支払い

銀行振り込みも選べますがクレジット払いの方が楽です。ここが驚きポイントだったのですが「クレジットカードでの支払いを希望する場合はカード番号と有効期限とセキュリティコードを教えてくれ」と言われます

「おいおい悪用しませんよね?」と不安になりますが、つまり代理でクレカ使って支払いを完了させてくれるという親切心です。もちろん相手を見極める必要はありますが、今回はFinnairの窓口で信頼できる相手(勿論)なので、少し不安も残りましたが必要情報を連絡しました。

(追記:その後、もちろん悪用はされていません。念のため報告。)

そのあと、5日ほどで日本に届きました。めでたしめでたし。


気になる郵送費

国際便で届けることになりなんやかんやとややこしくお金がかかります。論より証拠、百聞は一見に如かず、こちらをご覧ください。

は、80EURですとぉ Σ(゚д゚) ナンダッテェーー!?

まぁタブレットは何万もしますし、情報も入っているので、それを取り戻せると思えば支払いをためらう理由は何もありませんが。

 

以上、皆様も忘れ物にはお気を付けください。

Deep Learning における Skip Connection の研究まとめ

背景と課題 ~Deepすぎると学習が進まない~


  • CNNでは層を深くすることが重要
  • 層を重ねることで高度で複雑な特徴を抽出できる
    • 2012年に画像認識の首位となったAlexNetは14層
    • 2014年に画像認識の首位となったVGGNetは19層
    • 同じく2014年に首位となったGoogleNetは22層
    • 2015年に画像認識の首位となったResNetは152層
  • このとき、層を深くすると思い通りに学習が進まない課題があった
    • 勾配消失
    • 勾配発散

引用:Deep Residual Learning MSRA @ ILSVRC & COCO 2015 competitions


ResNetのアイデア


元論文: [1512.03385] Deep Residual Learning for Image Recognition

  • 入力値と出力値の差分(残差)を学習する
    • Deepになると入力xと出力x*Wは極めて近い値
    • ならばxをそのまま残して差分を計算した方が効率的
  • 残差ブロックの提案
    • 畳み込み層+Skip Connection(恒等写像)を組み合わせた
    • Skip Connectionによって誤差逆伝搬をしやすい
    • 変換不要ならば畳み込み層のWeightを0にすればよい
    • 既にいい感じになっているxに余計なことをしなくてすむ
    • Skip Connectionなしでは非線形写像によってxが理想値から離れることがある
  • 残差ブロックのアーキテクチャ
    • Plainアーキテクチャ
      • 3×3のconv層が2つ
    • Bottleneckアーキテクチャ
      • 1×1のconv層でdimを小さくして、、、
      • 3×3のconv層にかけて、、、
      • 1×1のconv層で元々のdimに戻す


『DenseNet』CVPR2017 BEST PAPER


元論文: [1608.06993] Densely Connected Convolutional Networks

アイデア:層の間で情報伝達を最大化する

  • 上の図は1つのDenseBlockを表す
  • ℓ番目の層への入力は、0~ℓ-1番目の層の全出力となる

 

 

  • このようなDenseBlockを4つ含むネットワーク構造を提案
  • ダウンサンプリングなどのためにDenseBlock間にPooling層も挿入

ちょっと、やりすぎだろ・・・・

 


Skip Connectionとよく似たContracting Path構造(U-Net)


[q505.04597] U-Net: Convolutional Networks for Biomedical Image Segmentation

 

  • Image-ClassificationではなくImage-Segmentationのタスクで生まれた手法
    • Semantic Segmentationにおいて位置は保存したい重要情報
    • CNNではPoolingや畳み込みをするほど位置情報が曖昧になることが課題
    • 局所的特徴と全体的位置情報の両方を把握したい
  • 形がU字なのでU-Net
    • 左側がEncoder
    • 右側がDecoder
  • Up-Sampling後にEncoder部の同次元数の特徴を連結する
    • あまり畳み込みされていないEncoder部では位置情報が保たれているという仮定
    • concatenation with the correspondingly cropped feature map
    • 従来どおり特徴を抽出しつつ、位置情報を保存する

 

 


Skip Connectionの有効性を解明


[1712.09913] Visualizing the Loss Landscape of Neural Nets

LOSS関数を可視化することで近年のNeural Networkのアーキテクチャの有効性を検証した論文。Skip Connectionを利用した場合(右図)は、non-convexからconvexに近づく。

 


Skip Connectionを含む新しいネットワーク構造 ~Deep Layer Aggregation (CVPR2018)~


[1707.06484] Deep Layer Aggregation

疲れたのでまた今度・・・

 

 

関西CVPRML勉強会2018で発表しました

2018/7/21に関西CVPRML勉強会で発表してきました

サイト https://sites.google.com/site/kansaicvprml/studygroup-vol35-20180721

 

会場は同志社大学の今出川キャンパス、や~、やっぱ京都って最高ですね(※関係ない)

 

勉強会に参加した感想

・関東より関西の方が人数絞ってるのでディスカッションが密

・ただし発表者は関東の方が多い

・京都大学の美濃研究室(現:飯山研究室)の関係者大杉w

 


私は発表テーマをUnsupervised-Feature-Learningに決めて、論文タイトルからえいやっでピックアップしました。っていかCVPR2018参加してないし

 

質疑応答では次のような議論がなされました。

『実験の章で、Conv層ではなくFullConection層を抜き出してFeatureにした場合が無いのは何故?試すべきでは?』⇒『(回答)はいその通りです。なぜしてないのかは不明です、すいません。』

『インスタンスレベルで区別するように学習してしまうと、同じクラス同士が近くにプロットされないのでは?』⇒『(回答)クラス問わずどれもこれも離れるようになっていればSVMで境界線を引きやすいのだと思います。』⇒『(コメント)最終的にはインスタンスの区別をしているが、途中のConv層の段階ではクラス共通の特徴量などを抽出できているのかもしれない。』

 


他の方の発表だと、ディープラーニングではないところで京大藤村さんの『Photometric Stereo in Participating Media Considering Shape- Dependent Forward Scatter(PDF)』が面白かったです。会場からは「ディープじゃないけどディープな研究だw」と高度なジョークが飛び交いました

 

ディープラーニングばかりのご時世に、ノンディープなCVの話はかえって新鮮に感じました。藤村さんの発表に限りませんが、参加者からは「関西にはノンディープな研究者が比較的多い気がする」との声も。

 

 


また、橋本先生からはFeature Disentanglingの研究紹介。初めて研究内容に触れる人でもわかりやすいように丁寧にまとめてくださってました。

 

 

他の方の発表資料も、CVPRML勉強会のサイトに掲載されています。是非ご覧ください、

以上。

ICML@Stockholmに参加しました(DAY1 チュートリアル)

ICMLとは


正式名称は『International Conference on Machine Learning』。毎年開催される機会学習のトップカンファレンスです。2018年は水の都ストックホルムで開催され、全日程参加してきました。

まずは初日のTutorialについて振り返ります。

 

①Learning with Temporal Point Processes


まずは1発目のセッション。が、初日ということもありRegistrationに長蛇の列が・・・

 

結局、列に50分ほど待たされてTutorial会場には入れた頃には半分が過ぎていました、悲しい。資料公開されてるので後で読んでおこう(たぶん)

Tutorialの資料: http://learning.mpi-sws.org/tpp-icml18/



↑内容的にはこんな感じ(資料の一部を転載)

②Toward theoretical understanding of deep learning


2発目のセッション。なんとも思い切りのいいタイトルを付けたもんだなぁと思いつつ参加。

theoretical understandingっていうくらいなので、どんなものかと思っていたら序盤はDeepLearningの入門編的な話ばかりでした。そのせいでついついウトウト・・・

としてたらこのスライドで目が覚めました

まてまて、こんな式が成り立つのか・・・?続きのスライドに証明も書いてましたが私には理解が追い付きませんでした。というか『VC  dimension,  Rademacher』がわかっていない。気になった人は是非ご自身の目でお確かめください。

Tutorialの資料: http://unsupervised.cs.princeton.edu/deeplearningtutorial.html

 

③Variational Bayes and Beyond: Bayesian Inference for Big Data


そして最後のセッションは変分ベイズ!! なんというか、変分ベイズって宗教色が濃いイメージあるんですよね(暴言)。とか言いながらかなり楽しいセッションでした。

 

ベイズ推定の基本の枠組みとしては『このデータが観測されたということは、もともとの分布はどういうものだっただろう?』と推定することです。このとき、観測値を適切に選ぶとベイズ推定の効率と精度、つまり少ないデータで高精度に分布を推定できるという話が非常に面白かったです。


↑Tutorialの資料。境界付近などデータを上手にサンプルしながら推定している。

Tutorialの資料: http://www.tamarabroderick.com/tutorial_2018_icml.html

 

おまけ


企業ブースには相変わらずGoogleやFacebookなどが出店していました。Microsoftのブースにて『Write your University』という企画がなされており、Kyoto Universityと書こうと思ったら誰かに先を越されていました。悔しい。

 

などと呟いていたら記入したご本人様からご連絡が(笑)

 

ということで(?)加筆などしてきました

ICML@Stockholmに参加しました(開催概要)

ICMLとは


正式名称は『International Conference on Machine Learning』。毎年開催される機会学習のトップカンファレンスです。

 

開催地:Stockholm smassan


2018年は北欧のスウェーデンにて開催されました。メタルとギターポップの国ですね(偏見)。水の都ストックホルムということで心躍らせた人もいたのではないでしょうか?

会場はStockholmsmassan。ストックホルム中央駅から3駅のÄlvsjö駅からすぐの場所です。

周辺に施設が少なくランチに不便する場所でした。昼休憩には大量の昼めし難民が出現、ストックホルム中央駅まで昼食のために電車移動せざるえなくなり、そのまま午後のカンファレンスに遅刻した人も多かったとか。

 

スケジュール


2018年は”7月10~7月15日”の5日間で開催されました。初日がTutorial、それから3日間の本会議、最後に2日間のWorkshopです。

学会前にはスケジュール管理アプリなども配布されます、これが本当に良く出来てました。

 

Reception


最終日にはReceptionが行われました、場所はSkansenMuseum。どんなパーティーだろうと思って参加したらなんと屋外ステージ付きで4つ打ちの低音をズンズン響かせながらビールをあおるという最高仕様でした、パリピ感がすごかったです。

日付が変わるころまで日が沈まないまま明るいので22時頃まで屋外でReceptionは続きました。ところで学会会場からReception会場が遠すぎません???

参加登録


ICMLの開催は7月中旬ですが、Registrationは3カ月前の4月中旬に始まります。NIPSほど速攻ではなかったにせよ、今回もSOLD OUTによって参加できなくなった人が多数出たようです。

参加費用はEarly Registrationでworkshopとtutorialも全て含めると900ドル。

ICML2018 概要 Categoryを一覧にまとめてざっと眺めてみた

ICML2018@スウェーデン https://icml.cc/

言わずと知れた機械学習のトップカンファレンス。

どんな研究が発表され、どんなトレンドにあるのか、カテゴリを一覧化して、ざっと眺めてまとめました。


■Supervised Learning
教師あり学習。
DeepLearningとカテゴリが分かれているので、それ以外の手法があると思ったが、やはり深層学習中心。
Noisyなデータを扱う研究が多く見られる。

■Clustering
クラスタリング
集合を意味ある部分集合に分割すること
教師なし手法の代表例

■Unsupervised Learning
教師なし学習。
正解データ無しでデータ集合の意味ある分類や属性推定をする。
Clustering、NearestNeighbor、TopologyEstimationなどが今回は取り上げられる様子。

■Transfer and Multi-Task Learning
マルチタスク学習。
1つのモデルで複数タスクの学習をさせることで、共通構造部分が効率よく本質的な特徴抽出機能を習得する。
ドメイン変換。
ドメイン不変の特徴量を抽出したり、ドメイン特徴を把握して学習済みのデータを転用させたりする。

■Deep Learning (Bayesian)
ベイジアンディープラーニング。
学習によって、ネットワークの重みWの値そのものではなく、重みWの事前分布p(w)を求めるニューラルネットワーク。
参考:http://deeplearning.jp/bayesian-deep-learning/

■Deep Learning (Neural Network Architectures)
深層学習の構造の研究。
学習の安定化、学習の高速化、性能向上、時系列の認識など、目的は様々。

■Deep Learning (Theory)
深層学習。
学習率や評価関数による影響や、最適化手法の研究が中心。

■Deep Learning (Adversarial)
学習モデルが誤認識するパターンを見つけ出して「ハッキング」する手法(Adversarial Attack)。
AdversarialAttackされない頑健なモデル提案や、AdversarialAttackによる判断根拠の理解などの研究がある。

■Generative Models
画像生成で流行っているGANなどが中心。
生成するだけでなく、ドメイン変換や、教師データが少なくて済むような工夫が研究されている。

■Online Learning
オンライン学習
機械学習における学習の枠組みの一つ。
全データを一気に用いず、逐次的に与えられる一部のデータからモデルを逐次的に改良する。
確率的最適化手法など、モデル更新アルゴリズムやが研究されている。

■Active Learning
教師あり学習にて、少ないデータで分類器をつくるときに学習データを増やす手法。
重要なデータのみに人間がラベルをつけて学習データに取り込む。
識別結果の自信があるものを正しいと仮定してラベルにするのが半教師あり学習で、
識別結果に自信がないものにラベルを手動付与して学習データに追加するのがActiveLearning。

■Reinforcement Learning
強化学習。
DQNが主流。
状態遷移確率や行動価値が未知の場合が多いため探索によって取得する。
レア事象を探索できるような手法や、難しい事象に対してマルチタスクから知識を得る手法や、タスク非依存のパラメータの最適化手法などが研究されている。

■Optimization (Bayesian)
ベイズ的最適化。
最適化関数が不明のときに事前分布を仮定して事後分布を元に最適化をする。
次にどの点を探索するのか、どこに最適解があるのか、といったことを計算する。
実験計画を効率的に定めるときなどに活用される。

■Optimization (Combinatorial)
組み合わせ最適化
変数、目的関数、制約条件から最適解を求めるアルゴリズムの研究

■Optimization (Convex)
凸最適化
コスト関数と不等式制約が全て凸関数
局所最適解=大域的最適解

■Optimization (Non-convex)
非凸最適化
局所解に陥らないためのアルゴリズムやパラメータの決め方、解空間の調査など。

■Multi-Agent Learning
マルチエージェント学習。
複数のエージェントが並列に学習する自律分散型の学習アルゴリズムなどの研究が多い。
応用編としてマルチエージェント強化学習などもある。

■Statistical Learning Theory
NearestNeighbors、ベイズ、ランダムフォレストなどの統計的手法の研究。

■Natural Language and Speech Processing
自然言語処理。
音声生成。
LSTMやRNNが中心。

 


Feature Selection
Kernel Methods
Parallel and Distributed Learning
Time-Series Analysis
Gaussian Processes
Approximate Inference
Monte Carlo Methods
Graphical Models
Sparsity and Compressed Sensing
Ranking and Preference Learning
Networks and Relational Learning
Structured Prediction
Causal Inference
Privacy, Anonymity, and Security
Society Impacts of Machine Learning
Other Models and Methods
Representation Learning
Other Applications
Computer Vision
Dimensionality Reduction
Large Scale Learning and Big Data
Matrix Factorization
Spectral Methods

Self-Attentionの良記事 “Attention Is All You Need (Transformer)”

Encoder-Decoderで主に使われていて、GANなどにも応用されているAttention構造を勉強しようと思って見つけた良記事です。

論文解説 Attention Is All You Need (Transformer)

 

元論文 Attention Is All You Need (Transformer)

 

個人的に詰まった点はSelf-Attentionについてです。

『自己注意 (Self-Attention) では Query,Key,Valueは全て同じ場所 (Self) から来る.例えばエンコーダの Query,Key,Valueはすべて下の隠れ層から来る.自己注意はある位置の出力を求めるのに下の隠れ層の全ての位置を参照できる』の部分を誤解していました。

つまり、n番目のLayerでは、i<nについて総当たりでi番目Layerとn番目Layerとの間でAttentionを取得するということみたいです。

Attentionの取得方法は内積がメインとのこと。手前の層でどこに特徴が強く出ているのか(≒注目すべき箇所がどこにあるのか)のヒントをもらうわけですね。

 

DCGANについて元論文を読みながら再整理

 

2年ほど前からブーム真っ最中のGANについて、丁寧に振り返りを使用というのが本記事の目的です。まとめサイトからの引用ではなくちゃんと元論文を読むことをポリシーとします。

 


そもそもDCGANとは

DCGAN(Deep Convolutional Generative Adversarial Networks)

簡単にいうと畳み込みニューラルネットワークを適用したGAN。論文ではネットワーク設計の注意点や特徴が細かく定義されている。

(論文)
Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks (2015) https://arxiv.org/abs/1511.06434

 


DCGANのネットワーク構造の特徴

pooling層をConvolutions層(strideあり)に置き換える

  • pooling層をConvolutions層に置き換える(stride数をうまく調整。poolingが2×2で実施されるなら、stride=2とすれば出力のサイズは等しくなる)。
  • replaces deterministic spatial pooling functions (such as maxpooling) with strided convolutions, allowing the network to learn its own spatial downsampling.

  • Generatorではzから画像サイズと同等サイズの出力にアップサンプリングしないといけないのでDeconvolution(正式名称:fractionally-strided convolutions)をする。これは元となる特徴マップを拡大してから畳み込むことでサイズを大きくする処理。

バッチノルムを使用

  • バッチノルムを挟んだ方が、初期値問題や購買消失問題が生じにくく、学習がスムーズになる
  • This helps deal with training problems that arise due to poor initialization and helps gradient flow in deeper models

  • ただし、全層に適用するとモデルが不安定になった。
  • GeneratorのINPUTとDiscriminatorのOUTPUTには適用しいようにしたら解決したとのこと(Why?)
  • Directly applying batchnorm to all layers however, resulted in sample oscillation and model instability. This was avoided by not applying batchnorm to the generator output layer and the discriminator input layer.

Full-Conectionをなるべく省く。

  • 学習安定性の観点でFull-ConectionよりもGlobal-Average-Poolingが広く使われているのと同じ考え方
  • Global-Average-Poolingについてはコチラを参照(https://qiita.com/mine820/items/1e49bca6d215ce88594a)
  • Second is the trend towards eliminating fully connected layers on top of convolutional features. The strongest example of this is global average pooling which has been utilized in state of the art image classification models (Mordvintsev et al.).

  • ただし、Generatorとzをinputする部分と、Discriminatorの判定結果0..1を出力する部分では全結合した方が良い結果が得られた。
  • A middle ground of directly connecting the highest convolutional features to the input and output respectively of the generator and discriminator worked well.

GeneratorではReLUを活性化関数として使用。ただし出力層のみtanh。

  • 学習が早いということで、出力層では有界の活性化関数を推奨している。
  • We observed that using a bounded activation allowed the model to learn more quickly to saturate and cover the color space of the training distribution.

  • そもそも画像(例:RGBの場合は0~255)を出力するのだから活性化関数が有界じゃないと面倒でしょ?という気もする

DiscriminatorではLeakyReLUを使用。

  • 理由には「従来手法がそれでうまくいってるから」程度しか書かれていない
  • Within the discriminator we found the leaky rectified activation (Maas et al., 2013) (Xu et al., 2015) to work well, especially for higher resolution modeling.

 


やー、なかなか直感的には「なるほど」と思っても、うまく説明しきれないですね。

Jupyterでpickleを読み込み過ぎてメモリエラー

pickleは便利ですが、ついつい巨大ファイルを読み込みすぎるとメモリエラーが発生します。

Jupyterでは画面上では [*] のままですが、実はメモリ問題で停止しているという場面が珍しくありません。

対策は多々有りますが、簡単にできるのは次の2つが挙げられます。

①変数名を使いまわして上書きするようにする

②dtype=np.float32 で読み込む

試してみてください。