msdd’s blog

deep learning勉強中。プログラム関連のこと書きます。

Google Colabで変数をフォームでいじれるようにする

Google Colabでフォーム(form)というpythonの変数を簡単に調節できるような機能があったので、使ってみた。

使い方

コードセルを選択した状態で、 f:id:msdd:20191126013109p:plain

右クリックして、フォームの追加をクリック。(挿入 > フォームの項目追加 でもok)、 f:id:msdd:20191126013040p:plain

こんな感じで、タイトルが自動生成される。#@titleとあるように、#から始まっており、pythonでのコメント形式なので実行時には影響がない。 f:id:msdd:20191126013148p:plain

もう一度右クリックしてフォームの追加すると、新しいフォーム フィールドの追加というのが出てくるので、作りたいフォームフィールのタイプ、変数名など設定する。 f:id:msdd:20191126011516p:plain

保存ボタンを押すと、変数とその初期値が生成される。そのあとに、コメントとして #@param と続き、こちらも実行時には影響がない。 f:id:msdd:20191126013614p:plain

生成したフィールドを書き換えてみると、すぐに左側のコードの方も書き換えた値に変更される。

f:id:msdd:20191126235646g:plain

コードセル選択で右クリック > フォーム > コードを非表示 でコード部分の表示、非表示を切り替えられる。 フォーム部分も同様に表示、非表示を切り替えられる。 f:id:msdd:20191127201700g:plain

フォームの値を変更した時に、自動で変数値変更

下の画像のように、変数のコードセルを実行した後、その変数を違うコードセルで使うことがよくある。 f:id:msdd:20191127014655p:plain

変数の値をフォームで変える時、変数のコードセルを再実行する必要がある。実行を忘れると、前回の変数の状態のままその変数を使うことになってしまう。 変数の値をいじるたびに実行する必要があるので、変数の値を変更したら自動でコードの実行をして変数の値を更新してくれる機能がある。

#@title デフォルトのタイトル テキスト{ run: "auto" }のようにtitleのところに{ run: "auto" }を付け加えると、フォームで変数更新した時に自動で再実行してくれる。 f:id:msdd:20191127194103g:plain

フォームフィールドタイプ使用例

フォームフィールドタイプは4つある。

  • dropdown
  • input
  • slider
  • markdown

プルダウン項目を設定して、作成するとその項目を選べるdropdownができる。 入力を許可することで{allow-input: true}が生成され、自分で値を入れられるようになる。 f:id:msdd:20191127013240p:plain

input

入力欄に入力することで、値を変更する。 タイプはboolean, date, integer, number, raw, stringから選べる。 f:id:msdd:20191127012427p:plain

slider

スライダーが表示されるもの。スライダーを動かす、数字を入力、上下ボタンをクリックで数字を増やしたり減らしたりできる。最小値、最大値、ステップ幅を決めれる。 f:id:msdd:20191127012248p:plain

markdown

#@markdown ~~aaa~~のように#@markdownの後に、マークダウンを書くと、マークダウンの表示結果が右側に出る。

f:id:msdd:20191127012043p:plain

type : rawについて

入力したものがそのまま変数に入る。 f:id:msdd:20191127195520p:plain

最後に

Google Colabでフォームを使ってみました。 機械学習でパラメータを調節することがよくあるので、その時にフォームを使うことで、 調節が楽になるのではないかと思います。 とても便利なので、使ってみてはどうですか。

参考サイト

colab.research.google.com