クロの制作日記

tf.functoinとtf.gatherを併用すると勾配が計算できない場合の対処法

最初に Tenosorflow2.0においてtf.functionでデコレートした関数の内部でtf.gatherを使用し、勾配を計算すると以下のようなエラーが出ました。 AssertionError: Expected all args to be Tensors or Variables; but got CompositeTensor エラーの原因 問題の…

Tensorflow2(subclassing API)でモデル・パラメータをsave(保存)・restore(復元)する方法

最初に ニューラルネットワーク(NN)において、学習を反復して行うことでNNの精度を向上させますが、あまり学習を反復させすぎると過学習が起こる可能性があります。そこで、過学習が起こる前、または最も精度が高い(何らかの評価指標において良い結果が出て…

tf.saved_model.load()でのTypeError: '_UserObject' object is not callable loadの対処法

以下のように学習を行ったモデルを読み込み、実行をしようとすると「TypeError: '_UserObject' object is not callable load」というエラーがでました。 学習と保存 class ClassifierModel(tf.keras.Model): # モデルのレイヤー定義 def __init__(self, **kw…

scikit-learnでデータをTrain・Test・Varidationに分割する方法

機械学習においてデータをTrain(学習)・Test(テスト)・Validation(検証)データに分割したい場合があると思いますが、scikit-learnの関数にはTrainとTestデータに分割するtrain_test_split()しかありません。言うてもそんなに難しい処理ではないので自分でコ…

C++で数字の文字列(区切り文字つき)をsplitする関数

最初に 某プログラムスキルチェックサイトで「3 19 2」のような、空白で数字が区切られている文字列が入力されることがありました。そんな場合でも各々の数字をint型として取得する関数を作成しましたので共有します。C++初心者ですので、あまりよろしくない…

Tensorflowのwhile_loopで配列に値を結合する方法

最初に tf.while_loopで以下のように配列に値を結合していくとエラーが吐かれます。 def add(x): return x+1 def condition(_i, x): return _i < 4 def update(_i, x): x = tf.concat([x, [_i]],axis=0) return _i+1, x ind = tf.constant(0) v1 = tf.Variab…

tf.condで引数ありの関数を使いたい場合

Tensorflow1.x系でif文のような条件分岐を実装したい場合はtf.condを利用します(Tensorflow2.x系でも使用可能)。 www.tensorflow.orgtf.condは以下のような引数を渡してあげる必要があります。 tf.cond( pred # 条件式(直接True or Falseを指定可能) true_fn…

tensorflowでのジャグ配列の扱い(tf.ragged.stackとtf.stack・tf.concatの違い)

最初に Tensorflowではnumpyやlistのように標準のTensorオブジェクトではジャグ配列に対応していません。ですが、tf.raggedを使用すればジャグ配列にも対応することができます。今回はそのtf.raggedの簡単な使い方とtf.concatやtf.ragged.stackの違いを解説…

初心者が頑張るTensorflow2入門(NN + CNNでのmnist分類)

最初に 前回の記事でTensorflow1.13.1のEager Executionでmnistの分類モデルを作成しました。 www.kuroshum.com上の記事はほんの何時間前かに作成した記事なのですが、tensorflow1.15でないと使えない関数があり、色々と面倒になったのでTensorflow2に鞍替え…

tf.functionの注意点

最初に Tensorflow2.x系ではtf.functionという機能が追加されてています。(tensorflow1.x系のeagerモードでも使えるかもしれませんが、確認していないです...) www.tensorflow.orgTensorflow2.x系はdefine by runで実行されるので、tensorflow1.xのように計…

初心者が頑張るTensorflow1.13.1 eager execution入門(mnist分類)

はじめに Tensorflow1.Xでは以下の記事で解説したようにDefine and Runで実行するのがデフォルトでした。 www.kuroshum.comDefine and Runとは以下の画像のように、最初に処理の金型(グラフ)を作成してから実行する際にデータを入力することで、処理を行う形…

初心者が頑張るゲームプログラミングC++の練習問題5(シェーダーを用いたゲーム開発)

ゲームプログラミングC++ 練習問題の内容 練習問題の解答 個人的に詰まったとこ memset シェーダー シェーダーの役割 OpenGLとGLSL inとoutとuniform シェーダープログラム完成までの流れ 頂点カラーの渡し方 最後に ゲームプログラミングC++ 以下の本でSDL…

初心者が頑張るゲームプログラミングC++の練習問題4(人工知能を用いたゲーム開発)

ゲームプログラミングC++ 練習問題の内容 練習問題の解答 個人的に詰まった箇所 Astarアルゴリズムの挙動 resize ステートマシン クラス図 最後に ゲームプログラミングC++ 以下の本でSDLとOpenGLを用いたC/C++ゲーム開発の勉強を進めています。ゲームプログ…

初心者が頑張るVim入門(基本の使い方とおすすめの拡張機能)

はじめに サーバー上での作業ではGUIを使うことができないことが多く、基本的にはCUI上で作業する必要があります。そこで、GUI上でしか作業したことがない人は、VScodeやatomなどのようなエディタが使えないことに戸惑うかもしれません。そこで、この記事で…

Linuxでユーザー追加・グループ作成・グループに追加の流れ

はじめに 私の所属している研究室では一つのサーバを複数人で共有して使っています。なので、研究室に学生が新しく入ったときに、サーバに人数分のユーザーを作成する必要があります。また、うちの研究室では他の人とファイルを共有するために、全員を同じグ…

初心者が頑張るTensorflow入門(実装解説編)

はじめに 前回の記事はこちら kurora-shumpei.hatenablog.com この記事では、前回の記事で解説した用語を元に、実際に、Tensorflowで簡単な線形回帰モデルを実装して、実装上に用いた関数などの説明を行います。また、本記事はTensorflow1.xの解説で、Tensor…

初心者が頑張るTensorflow入門(用語解説編)

はじめに 最近、機械学習や深層学習が広く知られるようになりました。それに加え、一部の専門的な知識を持った研究者やエンジニアだけでなく、専門外の学生や社会人の方々が「機械学習・深層学習を使ってこんな事をしてみた」といった試みをよくqitaやはてな…

二値分類における不均衡データへの対処方法~pAUC(partial AUC)最大化~

二値分類における評価指標に関する記事はこちら ↓ kurora-shumpei.hatenablog.com

numpy.linalg.LinAlgError: Last 2 dimensions of the array must be squareが起きる理由

研究室の後輩向けにpythonを用いた機械学習の講習を行っていたときに上記のエラーが起きたので、対処方法をエラー原因ごとに紹介します。

初心者が頑張るゲームプログラミングC++の練習問題3(ベクトルと基礎の物理を用いたゲーム開発)

ゲームプログラミングC++ 練習問題の内容 練習問題の解答 個人的に詰まった箇所 不安点 最後に ゲームプログラミングC++ 以下の本でSDLとOpenGLを用いたC/C++ゲーム開発の勉強を進めています。ゲームプログラミングC++各章には練習問題があるので、その問題…

初心者が頑張るゲームプログラミングC++の練習問題2(コンポーネント指向を用いたゲーム開発)

ゲームプログラミングC++ 練習問題の内容 練習問題の解答 個人的に詰まった箇所 コンポーネント指向 練習問題の指示内容 課題2.2 課題2.3 NULLとnullptr static_cast<> vectorのpush_backとemplace_back vectorの参照渡し 構造体のポインタ渡し csvファイル…

Gitでまとめて「git rm」 ・ 「git add」する方法

はじめに 大量にファイルやディレクトリを追加したり消去したりしたときに、ファイルごと、ディレクトリごとに一々「git add」とか「git rm」するのは面倒です。そこで、そういったことをまとめて処理するコマンドを記載しておきます。 コマンド まとめて「g…

過去に制作したゲーム紹介(黒洋館)

(adsbygoogle = window.adsbygoogle || []).push({}); 概要 青鬼、バイオハザード1を参考に、私(3年生)が主体となって4人グループで制作した2D脱出アクションゲームです。製作期間は3ヶ月くらい。↓ 黒洋館デモGIF class="figure-image figure-image-fotolife"…

過去に制作したゲーム紹介(AgentEmerge)

(adsbygoogle = window.adsbygoogle || []).push({}); 概要 エレベータアクションというゲームを参考に私が主体となって6人グループで制作したゲームです。制作期間は後輩の講習を含めて半年くらい。↓ 元ネタ動画 エレベーターアクション DELUXE↓ AgentEmerg…

初心者が頑張るゲームプログラミングC++の練習問題1(SDLを用いたゲーム開発)

ゲームプログラミングC++ 以下の本でSDLとOpenGLを用いたC/C++ゲーム開発の勉強を進めています。ゲームプログラミングC++各章には練習問題があるので、その問題の私なりの解答コードと詰まった箇所をここに残しておきます。

初心者が頑張るゲームプログラミングC++の環境構築(SDL + SDL_image + OpenGL + RapidJson + FMOD)

ゲームプログラミングC++ Githubリポジトリ 自分の開発環境 SDL ダウンロード SDL_image ダウンロード OpenGL ダウンロード RapidJson ダウンロード FMOD ダウンロード Visual Studioでの設定とSDLを用いたサンプルプログラムのビルド プロジェクト作成 C++…

二値分類における評価指標(混同行列・Precision・Recall・F値・ROC曲線・AUC)

はじめに 現在、大学で二値分類を扱う研究を進めています。その調査として、色々二値分類に関する知識が蓄えられたので、ここで放出しておきます。

0から始めるGitHub入門 第五回 (リモートリポジトリでの操作)

前回はブランチの概要と基本的な操作を学びました。 kurora-shumpei.hatenablog.com今回はついにリモートリポジトリ上での操作を説明していきます。

0から始めるGitHub入門 第四回 (ブランチの概要と基本的な操作)

前回はローカルリポジトリでの基本的な操作を行いました。 kurora-shumpei.hatenablog.com今回はGitの重要で便利な機能の一つである「ブランチ」の使い方を説明していきます。では早速始めていきましょう。

機械学習のニューラルネットワークを用いてワインの質を分類

はじめに 大学の機械学習に関する演習で、ニューラルネットワークを用いて好きな分類問題を解けといった課題が出されました。以下の記事でも言及しています。 kurora-shumpei.hatenablog.com今回はその課題で作成したニューラルネットワークの解説をしていき…