あなたのノイズ、わたしのミュージック。

自分が何にどう関心を示したかの記録。

3/11のつめたい夕餉 放送大学 入門微分積分(第9回) / SkillHub いちばんやさしいWebデザインの基礎入門 レッスン1〜3

3月の方が師走感あるよ


3/11の晩御飯のおとも

放送大学 入門微分積分(第9回)

vod.ouj.ac.jp

不定積分

積分定数の意味(積分微分の逆演算であり、対応する原始関数は多数考えられるためその不確定さをここに集約する)とか、各種関数の積分法とか、

未知の定数が含まれる式の積分のやり方(その定数が正である場合、0である場合、負である場合に分けてそれぞれ考える)とか。

以下適当に確認するのに良さそうなページ。

積分定数Cの意味を分かりやすく説明 - 具体例で学ぶ数学

積分公式一覧 | 高校数学の美しい物語

積分公式の効率のよい覚え方|数学|苦手解決Q&A|進研ゼミ高校講座|ベネッセコーポレーション


SkillHub いちばんやさしいWebデザインの基礎入門 レッスン1〜3

skillhub.jp

とりあえず用語とか概念知るところから始めなきゃなって思って探していて見つけたサービス。会員登録不要?

実際世に出てるWebサイトを例にとって確認する形で進行。

レッスン1: 構造

階層型: 階層が深くなると情報も詳細になっていくよう展開する

ファセット分類型: どのファセット=切り口からでも情報へのアクセスを可能とさせる

ポータル型: 様々なサイト同士をリンクする

ハブスポーク型: ひとつの拠点から複数のコンテンツを伸ばす

直線型: 目的地へとまっしぐらに誘導する

レッスン2: レイアウト

トップページ、一覧ページ、詳細ページ、フォームページからなるWebサイトがあったとして。

トップページ: そのサイトの内容がすぐわかるファーストビューを用意。

ビジュアルを押し出すかコンテンツを押し出すか広告を押し出すかはそのサイトの機能によりけり。

一覧ページ: 必要な情報(例. 美容院→店舗名、電話番号、住所、営業時間等)を配置、ここの情報だけである程度選択肢を絞れるように。

絞り込みのためのメニューや並び替え機能を設けると、さらにその検討を助けることができる。

詳細ページ: 情報自体の細かさだけでなく、その情報を見たユーザが次に取るであろう行動(例. 応募、購入、お気に入り追加等)を予測してコンテンツの配置をする。

フォームページ: ユーザが入力する手間を極力省けるように工夫(キー入力ではなく選択式、最低限必要な入力欄の可視化)

レッスン3: ナビゲーション

グローバルナビゲーション: どのページにいても表示されるメニュー。そのサイトの構造がわかるようにつくる。

その設計を考えるにあたっては、階層型、カテゴリ別、対象者別といった項目の分け方があること、

また人間の視線には決まった動き(アルファベットのZのような流れ)があるということを意識する。

ローカルナビゲーション: 各ページごとに設置するメニュー。

横並びにしたり、グローバルナビゲーションのドロップダウンメニューとして配置したり、ハンバーガーメニューのように畳み込んだり、

展開する端末のことも考えるとよい。

パンくずリスト: サイトの階層構造をユーザが把握できるように並べられたメニュー。

ステップナビゲーション: 登録や購入など、段階のある活動においていまどの地点にいるのかをユーザに示す。

そのほか、ユーザの行動を導く方法としては関連コンテンツの表示、特集ページの設置といった手段も。


そのほかかじったもの。

エンジリッシュ

https://e-lish.io/desk/user/detail/3231

70問。単語:イディオム:フレーズ = 3:3:1。

アメリカ版 大学生物学の教科書 第2巻 分子遺伝学

6.5: 細胞の減数分裂

染色体の数が増えるほど遺伝に多様性が生じる、ヒトは23対の染色体を持つため、単純な独立組合せだけを考えても2^{23}通りとなる。

組合せ?ってなったけどこの独立試行のことだってことでいいのかな?

6.6: 細胞死

ネクローシスアポトーシス。前者は損傷や栄養素の不足などによって、後者は不必要や個体への悪影響が予測されることによって。


3/11の晩御飯

納豆ご飯とお味噌汁、3割引で60円台になったキャベツメンチ×2。

3/8のつめたい夕餉 Flaskクイックスタート


3/8の晩御飯のおとも

Flaskクイックスタート

a2c.bitbucket.io

3/4の夕餉の続き。

今回ほとんどチュートリアル通りなのでさくっと、起動も前回同様python3.7 start.pyで。


ファイルアップロード

enctype="multipart/form-data" 属性をHTMLフォームにセットするのだけ忘れないでください。

そうしないとブラウザがファイル通信できなくなってしまいます。

読み切るよりも先に手を動かすのはやめようと思いました(なりました)。

start.py

from flask import Flask
from flask import render_template, request
from werkzeug import secure_filename

app = Flask(__name__)

@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        f = request.files['the_file']
        f.save('アップロード用ディレクトリへのパス' + secure_filename(f.filename))
    return render_template('upload.html')

if __name__ == '__main__':
    app.run(debug=True)

upload.html

<!doctype html>
<title>Upload from Flask</title>
<form name="upload" action="/upload" method="POST" enctype="multipart/form-data">
    <p>Please select the file to be uploaded.</p>
    <input type="file" name="the_file"><br>
    <input type="submit" value="upload">
</form>

アップロード前

f:id:osouonna:20190309021458p:plain:w300

アップロード後

f:id:osouonna:20190309021531p:plain:w300

f:id:osouonna:20190309021547p:plain:w300

指定したディレクトリにファイルがアップロードされました!

なおファイル名の日本語部分は検閲により削除

ちなみにここでimportされているWerkzeugはFlaskの構成ライブラリのなかでも主要なひとつで、

Webアプリケーションをつくるのに便利な機能が詰まっているものなのだそう、WSGIに準拠。

今回はクライアント側で名付けられたもとのファイル名によってアプリケーションに悪影響及ばないように色々退けてくれる(つまりさっきの検閲により削除の検閲元)、

secure_filenameが使われています。

.

※参考(にしたい)リンク達

enctype="multipart/form-data"関連

フォームデータの送信 - ウェブ開発を学ぶ | MDN

enctype='multipart/form-data'ってなんだ? - MUGENUP技術ブログ

Werkzeug関連

Werkzeug Tutorial — Werkzeug Documentation (0.14)

Web Server Gateway Interface - Wikipedia

WerkzeugでFlaskを使ったPythonのWebAppをプロファイリングする

「werkzeug」でWSGIアプリをつくろう! — PythonMatrixJp

WerkzeugとJinja2の力を融合させたやつがFlaskみたいな感じなのだろうか。超魔導剣士ブラックパラディン的な


リダイレクト及び例外の発生

start.py

from flask import Flask
from flask import url_for, render_template, abort, redirect

app = Flask(__name__)

@app.route('/')
def index():
    return redirect(url_for('to_abort'))

@app.route('/abort')
def to_abort():
    abort(401)

@app.errorhandler(404)
def page_not_found(error):
    return render_template('page_not_found.html'), 404

if __name__ == '__main__':
    app.run(debug=True)

page_not_found.html

<!doctype html>
<h1>がんばれ!メロディー</h1>

この状態でhttp://127.0.0.1:5000/にアクセスすると、http://127.0.0.1:5000/abortにリダイレクトさせられた挙句に401 Unauthorizedのエラーが吐き出されます。鬼畜みたいな作例だ

また、/abortじゃなくて/aboutだったわとURL打ち直しても今回はabout.htmlを用意していないため、404 Not Foundのエラーとなるのですが、

f:id:osouonna:20190309031700p:plain:w300

URLは据え置きのままに表示が上記のpage_not_found.htmlの内容に置き換えられると、つまり独自のエラー画面を配置できるというわけですね。

余談ですが柴田聡子さんのがんばれ!メロディー、とても聴きやすくなっていいですね、っていうかアルバム名あまりにもずるい


セッション

前回ちょっと調べていくうちに足を踏み入れてしまったあたりだ。復習も兼ねて。

start.py

from flask import Flask
from flask import url_for, render_template, request, session, redirect, escape
import os

app = Flask(__name__)

@app.route('/')
def index():
    if 'username' in session:
        return 'Logged in as %s' % escape(session['username'])
    return render_template('index.html')

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))

@app.route('/logout')
def logout():
    session.pop('username', None)
    return redirect(url_for('index'))

if __name__ == '__main__':
    app.secret_key = os.urandom(12)
    app.run(debug=True)

index.html及びlogin.html→前回と同じにつき割愛

f:id:osouonna:20190305004343p:plain:w300

/indexにアクセスすると前回と同じフォームが現れます。

このログインのほうのフォーム埋めてloginボタンを押すと、

f:id:osouonna:20190309033533p:plain:w300

遷移先のページでもusernameが保持されていることがわかる。まあ今回index.htmlにリダイレクトしてしまっているので遷移感薄いですが……。

この状態だといくら/indexにアクセスしても"Logged in……"のメッセージが出てきてしまうので、/logoutにアクセスしましょう。また最初のフォームが現れてくれます。

(ログアウトボタン作るの忘れていたのは内緒)

.

セッション使うときには秘密鍵の設定が必要みたいです。

今回はFlask.secret_keyにos.urandomで作った乱数ぶっこんで設定。

CTF的 Flaskに対する攻撃まとめ - Qiita


あとはこまごまだったり仕組み自体の理解が追いつかなかったり流石に眠かったりなのでここまで。

flask.pocoo.org

日本語訳されてるバージョンのクイックスタートだいぶ古いバージョンみたいでされてないバージョンは記法もPython3系であったし紹介されている昨日もとてもとてもなのとに気がついてしまったけどたぶん夢なので寝ます。

.

シンプルイズ奥が深い、いやたぶん見通しがいいからこそ奥まっているその様を把握しやすいのだろうか。

Djangoとか魔境めいたとこあるから……。


そのほかにかじったもの。

エンジリッシュ

https://e-lish.io/desk/user/detail/3231

今週全然手付かずなの、グラフのおかげでもろにバレる。

でもランクインしていたのでハッピー、総ユーザ数は知らんが

f:id:osouonna:20190309040308p:plain:w300

今日は単語70イディオム60フレーズ30。

アメリカ版 大学生物学の教科書 第2巻 分子遺伝学

カラー図解 アメリカ版 大学生物学の教科書 第2巻 分子遺伝学 (ブルーバックス)

カラー図解 アメリカ版 大学生物学の教科書 第2巻 分子遺伝学 (ブルーバックス)

  • 作者: デイヴィッド・サダヴァ,クレイグ.H・ヘラー,ゴードン.H・オーリアンズ,ウィリアム.K・パーヴィス,デイヴィッド.M・ヒリス,石崎泰樹,丸山敬,浅井将,吉河歩
  • 出版社/メーカー: 講談社
  • 発売日: 2010/05/21
  • メディア: 新書
  • 購入: 8人 クリック: 120回
  • この商品を含むブログ (23件) を見る

ブルーバックスのすごいやつ。

第6章 染色体、細胞周期及び細胞分裂の6.3節まで。

細胞分裂のうち有糸分裂の仕組みについて。


3/8の晩御飯

お昼たくさん食べたのでソイジョイとおもちでおしまい。

3/4のつめたい夕餉 Flaskクイックスタート / 放送大学 入門微分積分(第05回)

昨日買うたTIVOOがかわいい。音も良い。


3/4の晩ご飯のおとも

Flaskクイックスタート

a2c.bitbucket.io

これを言いたかったそれだけではじめたFlask。

いやうそデコレータの記法ちゃんとわかりたかったからがほんと

まだ全然その目的にまで理解を深められていないけれど、ルーティングとか機能ごとにファイル分けなくても、

実行するPythonファイルそのものを中心に組み上げていけるようにもなってるのが面白いなあって思ってます。

あといちいちサーバ再起動させなくてもデバッグ動いてくれててなんか認識したら止めてくれる(要設定)のとかもちょっとうれしい。

.

クイックスタートを中心に据えてぼちぼち試し、リクエストオブジェクトの項まで。

とはいえ想定する挙動をいまいち把握しきれておらず、

具体例試してるひとの記事とかパクりながら機能を把握しようと試みている。

難しい記法があるわけではないんだと思う(Python2系で書かれていることにちょっと気をつければ多分大丈夫)けどどうにもそそっかしく……。

そんなわたくしでも、とりあえず決まったusernameとpassword打ち込んだらログインできるフォームを実現するまではできました。

.

start.py(名前はflask.py以外ならなんでも良いらしい)

from flask import Flask
from flask import render_template, request, session
import os


app = Flask(__name__)


# app.routeでルーティングの制御をしている?
@app.route('/')
def index():
    return render_template('index.html')


# methodsで宣言したリクエストしか受けないことに注意
@app.route('/hello', methods=['GET', 'POST'])
def hello():
    if request.method == 'POST':
        name = request.form['name']
    else:
        name = 'no name'
    return render_template('hello.html', title='flask test', name=name)


@app.route('/login', methods=['GET', 'POST'])
def login():
    error = None
    if request.method == 'POST':
        if request.form['username'] == 'yasen_chang' \
            and request.form['password'] == 'yasen':
            name = request.form['username']
            session['logged_in'] = True
        else:
            error = 'Invalid username/password'
    return render_template('login.html', name=name, error=error)


if __name__ == '__main__':
    app.secret_key = os.urandom(12)
    # サーバ起動
    app.run(debug=True)

HTMLまでもがめっちゃ雑だけど許されたい。

HTMLファイルは今回だとstart.pyと同階層にtemplateってディレクトリ構えてその中に放り込んでおけばOK。

index.html

<!doctype html>
<title>Index from Flask</title>

<form action="/hello" method="POST">
    <p>hello</p>
    <input name="name">
    <input type="submit">
</form>

<form name="login" action="/login" method="POST">
    <p>login</p>
    username:<input type="text" name="username"><br>
    password:<input type="password" name="password"><br>
    <input type="submit" value="login">
</form>

hello.html

<!doctype html>
<title>Hello from Flask</title>

{% if name %}
    <h1>Hello {{ name }}</h1>
{% else %}
    <h1>Hello World!</h1>
{% endif %}

login.html

<!doctype html>
<title>Login from Flask</title>

<h1>Login {{ name }}</h1>

この状態でpython3.7 start.pyみたいにPythonファイル実行し、

http://127.0.0.1:5000/ にアクセスするととりあえず下記のフォームが出てくる。

f:id:osouonna:20190305004343p:plain:w300

上図のように入力した状態でhelloの方のsubmitボタン押すとこんな感じ、

f:id:osouonna:20190305004414p:plain:w300

loginの方のsubmitボタン押すとこんな感じ。

f:id:osouonna:20190305004435p:plain:w300

たいした挙動でなくとも、リクエスト内容に応じた表示がなされるとじんわりうれしい。

※参考にした記事などなど、まとめてて気がついたけどassert文のあたり立ち返れてないなあ

Flaskを触ってみる 1 - Doge log

[Python] assert文で超お手軽テスト - Qiita

はじめての Flask #2 ~POSTを受け取ろう~ - Qiita

python flaskねた - holly's wiki

ちょっとPython --Flaskでlogin!|donguri|note

.

もうちょい続きがあるようなのでちゃんと咀嚼しながら仕組みもわかっていきたい。


放送大学 入門微分積分(第05回)

vod.ouj.ac.jp

微分法の基本公式。だいたいネイピア数がすごい。対数もすごい。

媒介変数表示の微分、媒介変数tを介してxとyとがあるとき、xとyそれぞれをtについて微分してただけなんだけどなんであれで円について考えていけるのかあんまりわかってない。

【基本】媒介変数表示 | なかけんの数学ノート

とりあえず曲線を表現しやすくなるものであると把握。


そのほかのつまみぐい。

エンジリッシュ

https://e-lish.io/desk/user/detail/3231

日付変わっちゃったからうろ覚えだけど40問くらい、単語問題。


3/4の晩ご飯

納豆ご飯とインスタントなお味噌汁、卵が新鮮なやつだったのでまずまず幸福。


コードを書いた1日は早い。

3/2のつめたい夕餉 Udemy キカガク 人工知能・機械学習 脱ブラックボックス講座 - 中級編 - (セクション7・8)

外科の予約を寝過ごし歯医者で昼寝、帰るやいなや3時間床で気を失う……もう寝ん


3/2の晩ご飯のおとも

キカガク 人工知能機械学習ブラックボックス講座 - 中級編 - (セクション7・8)

https://www.udemy.com/share/1000yeBEsYcFtTTXo=/

こないだ見終わったものの、演習部分手を動かしてなかったので復習&Corabolatoryの練習も兼ねて。

内容としては、重回帰分析によるデータ解析を、より詳解していくための手法(外れ値の処理・スケーリング)についてでした。

以下講義メモ(演習部分に関しては基本Corabolatoryへ、ちょっと細かい話のみこちらにメモ)。


3σ法

正規分布で表されると仮定されたデータにおいて、

平均値から±3σの範囲に含まれる値についてのみを捉え、

そこから外れた値を外れ値として検出するデータ処理手法。

σ: 標準偏差。値のばらつきの度合いを示す

※平均値ではなく中央値からの範囲をとったものはHampelの判別法という。

平均値や標準偏差が外れ値の影響を受けることを考慮した手法。

外れ値検出 (Outlier Detection) もしくは 外れサンプル検出 (Outlier Sample Detection) ~他の値・サンプルと大きく異なる値・サンプルを見つけよう!~

3σの範疇に入る値は、そのデータの99.7%程度になるとされる。


スケーリング

 \hat{y} = w_{1}x_{1} + w_{2}x_{2} + … + w_{M}x_{M} + b

変数xの値がとるばらつきは、その変数が何を示しているものであるのかについても変わってくる。

例. 物件の家賃を決める要素
広さ: 0-50平米
駅からの距離: 0-1000m
治安: 0か1(良いか悪いか)

→これらのスケールを統一しなければ、どの変数の重みwが大きいのか、どの変数が重要なものなのか捉えづらくなる。

Standard Scaling(データの標準化)

 x_S = \frac{x - \bar{x}}{\sigma}

変数xについてStandard Scalingを行う際には、

xからそのデータの変数全体の平均値を引き、それを標準偏差σで割って求める。

→平均0、標準偏差1の状態に、各変数xの値を調節している。

※σ = ±1の範囲に入る値はデータ全体の68%ほどであるため、1より大きくなる値が検出されることもある。

最大値1ではないことに注意。


外れ値除去・スケーリングを考慮した重回帰分析の演習

演習用Colaboratory

外れ値除去(3σ法の適用)においてサンプルが減りすぎてしまう場合の対処

サンプルが減りすぎてしまう場合、以下のような要因が考えられる。

  • 3σ法は正規分布を仮定したものであり、それに従わないデータではうまくいかない

  • 平均の数が多い

今回の場合では14個の変数について3σ法を適用している、つまりデータ全体においてカットされた範囲は0.03 * 14。

→見たいところを絞る必要が生じる場合もあると認識しておく。

.

具体的な対処方法は以下のように。

  • 外れ値を取り除く(今回はこれ)

  • 外れ値を平均もしくは中央値で補完

  • 主成分分析を使用し、潜在変数に変換した後に3σ法を適用

主成分分析: 多次元のデータの共通となる要素を探り、合成して次元を落として行う分析手法?

主成分分析

主成分分析(1/4) :: 株式会社アイスタット|統計分析研究所


過学習

学習済みのモデルを構築し、訓練データと検証データとでそれぞれ決定係数(Xとyの相関)を測定すると、 検証データで値が下がることがある。

過学習(オーバーフィッティング)が発生している恐れがある。

重回帰分析では過学習を避けることができないため、データのクレンジングで対応。

他の機械学習手法では、ハイパーパラメータというパラメータで人間側が調整をかけるため、その値を調整しながら過学習を避けるようにしていく。


Standard Scalingによるデータの前処理

今回の場合、scikit-learnのStandardScalerを使用し、訓練用のデータでスケーリングの学習(平均と標準偏差の計算)を行っている。

重回帰分析の場合、スケーリングで精度が変わるような手法ではないため、検証結果自体は変わらない。

→各変数の重みを確認するのに使う。


そのほかつまみぐい。

エンジリッシュ

https://e-lish.io/desk/user/detail/3231

150問。単語70/イディオム50/フレーズ30。


3/2の晩ご飯

AOSANのパン。シンプルなコッペパンが本当に美味しかった。

2/28のつめたい夕餉(即席)

今日で試用期間終わりだったような気がするんですけど来月からは……、ってお伺いしたら、

当然のことだと思って伝えていなかったよ、って返ってきた。

✌️


2/28のおとも

放送大学 入門微分積分(第4回)

vod.ouj.ac.jp

導関数。やっと微分したねえ

(x^{n})' = nx^{n-1}の導出、清々しくていい。


エンジリッシュ

https://e-lish.io/desk/user/detail/3231

173問。ツイートで流してから20問フレーズやったのは覚えてるんだけどほかの内訳覚えてない。


エンジニアが生き残るためのテクノロジーの授業 6章

セキュリティについて。

人間が悪いのが悪いけどそうも言ってられないので多岐にわたって知っていこうねみたいな。

攻められないと守れないから団結するといいよ的な。


Aidemy 教師なし学習 第1章

aidemy.net

教師なし学習の基礎。答えの与えられていないデータセットに対して、AIが自ら判断して答えを決めるようにしていくやつ。

データの集まりを認識させたり(クラスタリング)、分散が最も広がるように軸引いたり(主成分分析)といった手法がある。

データの距離についてはユークリッド距離、類似度についてはコサイン類似度を求めることによって見つめることができる。


paizaスキルチェック D118:こよみの変換

paiza.jp

記憶が無なので標準入力受け取るのに一番手間取った。


2/28の晩ご飯

最寄り駅前に表れるケバブ屋台のケバブ。最近同業者が節操ない商売してるせいでおまわりさんの目が厳しくなり大変らしい。

うんうん頷いてたらお肉めっちゃ入れてくれてた。

2/27のつめたい夕餉: 放送大学 入門微分積分(第3回)

京王線ダイヤ改正がボディブローのように効いてきている。


2/27のおとも

放送大学 入門微分積分(第3回)

昨日の続き。

今回は単調関数、逆関数、合成関数といった、発展的な関数の扱いについて。

.

同じ関数を2回合成してできた合成関数の問題の解き方が面白かった。

これを考えていくと立派な4次方程式が建立されあっやだってなるんだけど、

そこで頭停止させずに冷静に見ていけば、今回は同じ関数同士の合成なのだから、1回の合成の時を考えた時に立てられる2次方程式の解がそこに含まれているのだとわかる。

つまり解かなければならなくなった4次方程式は、この2次方程式で割り切れるものである。

割って出てきた2次方程式と割るのに使った2次方程式をそれぞれ解いていけば、それがこの問いの答えとなる。

まあそれをする前にそれができるかどうか担保するためにそもそもこれが合成できるような代物なのかといったところからも考えなきゃなので、やはりそれなりにやだかもしれないけど……。

.

動画をみるまま4次方程式が出てきて云々と宣っていたわたくし、実際合成関数がどんな構造のものであったかも覚えておらず、

こういうのでド基本から確認してたというのは内緒にしておこうとおもいます。

www.youtube.com

何を変数として考えていけばいいのか、着眼点を見失わないようにするのがたぶん大事。


そのほかにかじったもの。

エンジリッシュ

お昼休みに100問。単語:イディオム:フレーズ = 6:3:1とかだったと思う。

時間で見たらまた違った割合になりそうだけど……。

エンジニアが生き残るためのテクノロジーの授業 5章

データベースについて。

保存したり分析したり、データを扱う処理というものはいまやごくごく普通に存在しているが、

大量のデータを障害には堅牢にアクセスには柔軟に、また何につけても安全に取り扱うために、

どのような設計や制御が考えられてきているのか。

今週ちょくちょくSQLでごにょごにょする仕事あって今日がそのピークっぽい感じだったので、帰りの電車内で字を追いかける目が死んでいた……。

トランザクション要件のACID特性に対して、というよりかはそれも踏まえて現状に沿って立てられた新しい要件にBASEという概念があるらしい。

Basically Available: 基本的にはいつでも利用可能な状態にしておく。

Soft-State: 現時点の状態が常に厳密に正確である必要はない。

Eventually Consistent: 最終的に一貫性が保たれればいい。

(本文中より)

なんか変なところから頭文字取ってるなと思ったら、ACID(酸)に対してBASE(塩基)ってシャレでもあるとかなんとか、

塩基の方がなんか色々だるかった気もするけどなあ、こっちのBASEはなかなか親しみやすさすら感じますね。

国立情報学研究所 オープンハウス2018:基調講演「『目で見て診断する』医療をAIで支援する」

youtu.be

TECH::EXPERTのoutputチャンネルに受講生のオリジナルアプリが掲載されており、それがためになりそうなYouTube動画を紹介する、みたいなサービスだったので、

なんか紹介できそうな動画ないかなと思って再生履歴漁ってたら出てきた、多分前にもTwitterの方に貼ったかもしれない。

内臓の画像解析の話、なかなかぎりぎりな感じで良いですよ……。


2/27の晩ご飯

前日の予想通り、だとあまりにもだったのでインスタントのお味噌汁買い足した。あとカプリコ