Gen の紹介 === <!-- .element: style="font-size: 300%" --> <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> 2019/08/31 機械学習 名古屋 第21回勉強会 antimon2(後藤 俊介) Note: スポンサー枠(?)LTスライドですっ ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> ## お品書き + お前誰よ? + 来栖川電算の紹介 + Juliaの紹介 + Genの紹介 --- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> # お前誰よ? ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> ## 自己紹介 + 名前:後藤 俊介 + 所属:**[有限会社 来栖川電算](https://www.kurusugawa.jp)** + コミュニティ:**[機械学習名古屋](https://machine-learning.connpass.com/)**, **[JuliaTokai](https://juliatokai.connpass.com/)**, [Python東海](https://connpass.com/series/292/), Ruby東海, … + 言語:**[Julia](https://julialang.org)**, Python, Scala(勉強中), Ruby, … + ![Twitter](https://i.imgur.com/HqouMIg.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" --> [@antimon2](https://twitter.com/antimon2) / ![Facebook](https://i.imgur.com/01nPd37.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" --> [antimon2](https://www.facebook.com/antimon2) + ![Github](https://i.imgur.com/yBKtii5.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" --> [antimon2](https://github.com/antimon2/) / ![Qiita](https://i.imgur.com/FxHMi64.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" --> [@antimon2](http://qiita.com/antimon2) / [<i class="fa fa-file-text"><!-- .element style="font-size:120%" --></i> @antimon2](https://hackmd.io/@antimon2):new: Note: 今日も Julia の話っ --- <!-- .slide: data-background-color="rgba(44,214,221,0.3)" --> # 来栖川電算 Note: スポンサー枠っ ---- <!-- .slide: data-background-color="rgba(44,214,221,0.3)" --> [![有限会社来栖川電算](https://i.imgur.com/8Kuhfel.png) https://www.kurusugawa.jp](https://www.kurusugawa.jp) Note: 見に来てねっ ---- <!-- .slide: data-background-color="rgba(44,214,221,0.3)" --> [![来栖川電算 ホーム Facebook](https://i.imgur.com/eQq56zJ.jpg) https://www.facebook.com/kurusugawa.jp](https://www.facebook.com/kurusugawa.jp) Note: 『いいね!』してねっ ---- <!-- .slide: data-background-color="rgba(44,214,221,0.3)" --> <iframe src="//www.slideshare.net/slideshow/embed_code/key/ohREQjlgqX6jXo" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="//www.slideshare.net/youheiyamaguchi/jawsug-20190828" title="JAWSUG 20190828" target="_blank">JAWSUG 20190828</a> </strong> from <strong><a href="https://www.slideshare.net/youheiyamaguchi" target="_blank">陽平 山口</a></strong> </div> Note: 8/28に行われた JAWS-UG名古屋 での弊社山口の発表資料っ ---- <!-- .slide: data-background-color="rgba(44,214,221,0.3)" --> ## 概要 + 設立 2003年(名古屋工業大学発ベンチャー) + 従業員 66人(メイドさんも含めて!) + ここ最近人が増えた Note: 従業員にはバイトも含まれています。 ---- <!-- .slide: data-background-color="rgba(44,214,221,0.3)" --> ## SF 世界の技術を実現し、<br>社会に役立てる + AI 技術のライセンス販売・研究開発・SI + 文字認識,物体認識,動作認識,行動認識 + アプリの企画・制作・運営 Note: マルチっ ---- <!-- .slide: data-background-color="rgba(44,214,221,0.3)" --> ## 技術者集団 + 最先端の AI 技術 + 文字認識、物体認識、モーション認識 + 限界性能を引き出す実装技術 + 高精度化、高速化、省資源化、並列化、分散化 + 高品質なソフトウェアを実現する技術 + 言語・アーキテクチャ・プロセスに対する深い造詣 ---- <!-- .slide: data-background-color="rgba(44,214,221,0.3)" --> ## ワンストップ開発 + データ収集・アノテーション + AI(認識技術)の研究開発 + アプリの企画・制作・運営 + 自社製実験パイプライン Note: アノテーションツールも自社製っ 基本使用料無料で誰でも使えますっ! ---- <!-- .slide: data-background="https://i.imgur.com/XuAkn8y.png" data-background-color="rgba(44,214,221,0.3)" --> Note: ![体制](https://i.imgur.com/XuAkn8y.png) ---- <!-- .slide: data-background-color="rgba(44,214,221,0.3)" --> ## 製品・サービス + 画像認識API(ライセンス販売) + 物体認識(研究開発→SI) + 走行画像リアルタイム認識、地図生成 + モーション認識 + [毎朝体操](http://maiasa.jp/) + 研究開発支援 + **[AnnoFab](https://annofab.com/)**(アノテーションツール) + AHAB(実験スケジューラ) Note: なお次回、[AnnoFab](https://annofab.com/) のハンズオンをこの機械学習名古屋でやりますっ ---- <!-- .slide: data-background="https://i.imgur.com/XaH6sgN.jpg" data-background-color="rgba(44,214,221,0.3)" --> Note: ![事例・製品・サービス](https://i.imgur.com/XaH6sgN.jpg) ---- <!-- .slide: data-background-color="rgba(44,214,221,0.3)" --> ## 求人等 + 研究(認識技術) + 開発(サーバサイド/フロントエンド) + 企画(アプリ/サービス) + デザイナ Note: 学生の皆さん、転職者の皆さん、力を貸してくださいっ ---- <!-- .slide: data-background="https://i.imgur.com/5CbxlN7.jpg" data-background-color="rgba(44,214,221,0.3)" --> Note: ![募集中!](https://i.imgur.com/5CbxlN7.jpg) --- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> # Julia の紹介 ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> [![Julia](https://raw.githubusercontent.com/JuliaLang/julia-logo-graphics/master/images/julia-logo-color.svg?sanitize=true)<!-- .element: style="background:white;width:80%" -->](https://julialang.org) Note: 実は何気にロゴマイナーチェンジしてますっ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ## Julia とは?(1) + [The Julia Language](https://julialang.org) + 最新 **v1.2.0**(2019/08/20) + LTS v1.0.4(2019/05/16) + pre v1.3.0-rc1(2019/08/18) + 科学技術計算に強い! + 動作が速い!(LLVM JIT コンパイル) Note: ググるときはなるべく [julialang](https://www.google.co.jp/search?q=julialang) で! ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ## Julia とは?(2) > + Rのように中身がぐちゃぐちゃでなく、 > + Rubyのように遅くなく、 > + Lispのように原始的またはエレファントでなく、 > + Prologのように変態的なところはなく、 > + Javaのように硬すぎることはなく、 > + Haskellのように抽象的すぎない > > ほどよい言語である <!-- .element: style="font-size:66%" --> 引用元:http://www.slideshare.net/Nikoriks/julia-28059489/8 <!-- .element: style="font-size:71%" --> ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ## Julia とは?(3) > + C のように高速だけど、 Ruby のような動的型付言語である > + Lisp のようにプログラムと同等に扱えるマクロがあって、しかも Matlab のような直感的な数式表現もできる > + Python のように総合的なプログラミングができて、 R のように統計処理も得意で、 Perl のように文字列処理もできて、 Matlab のように線形代数もできて、 shell のように複数のプログラムを組み合わせることもできる > + 超初心者にも習得は簡単で、 超上級者の満足にも応えられる > + インタラクティブにも動作して、コンパイルもできる <!-- .element: style="font-size:50%" --> ([Why We Created Julia](http://julialang.org/blog/2012/02/why-we-created-julia) から抜粋・私訳) <!-- .element: style="font-size:71%" --> Note: いろんな言語の「いいとこどり」言語!ってことでっ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ## 要するに <!-- .element: style="font-size:300%" --> + 動的言語なのに速い! + 文法も覚えやすい! + 数値計算に強い! <!-- .element: style="font-size:180%" --> Note: 機械学習とかにも持って来いっ! ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ## 主な機能 <!-- .element: style="font-size:280%" --> + [多重ディスパッチ](https://docs.julialang.org/en/v1/manual/methods/) + [動的型システム](https://docs.julialang.org/en/v1/manual/types/) + [並行・並列処理](https://docs.julialang.org/en/v1/manual/parallel-computing/)、コルーチン + [組込パッケージマネージャ](https://docs.julialang.org/en/v1/stdlib/Pkg/) <!-- .element: style="font-size:160%" --> Note: っ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ## 文法・関数 Note: 以降、ほぼ過去スライドからのコピペ。すっ飛ばして先へ進んで戴いてもOKっ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### 基本的な演算 ```julia julia> 1 + 2 - 3 * 4 # 四則演算(除算以外) -9 julia> 7 / 5 # `整数 / 整数` の結果は浮動小数 1.4 julia> 7 ÷ 5 # `整数 ÷ 整数` の結果は整数 1 julia> 2 ^ 10 # 冪乗は `^` 1024 julia> 123 & 234 | 345 # 論理積 / 論理和 376 julia> 123 ⊻ 234 # 排他的論理和(==`xor(123, 234)`) 145 ``` <!-- .element: style="font-size:46%" --> Note: 整数同士の除算は実数になりますっ 整数除算演算子 `÷` が別に存在します(Python の `//` 相当)っ また冪乗も(`**` ではなく)`^` ですっ `⊻` は `\xor`+<kbd>Tab</kbd> または `\veebar`+<kbd>Tab</kbd> で変換できますっ ちなみに先ほどの `÷` も `\div`+<kbd>Tab</kbd>で(基本的に ${\rm \TeX}$ の書式)っ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### 配列 ```julia julia> a = [1, 2, 3, 4, 5] 5-element Array{Int64,1}: 1 2 3 4 5 julia> a[1] # Julia は 1-origin 1 julia> println(a[2:3]) # 範囲指定は両端含む [2, 3] ``` <!-- .element: style="font-size:50%" --> Note: 1-origin であることに注意すればあとは普通の配列っ あと `a:b` は範囲(`Range`)の記法。両端を含む(Ruby の `a..b` と同じ)っ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### 配列の内包表記 (1) ```julia julia> a = [n^2 for n=1:5] 5-element Array{Int64,1}: 1 4 9 16 25 julia> A = [x+10y for y=1:3, x=1:3] 3×3 Array{Int64,2}: 11 12 13 21 22 23 31 32 33 ``` <!-- .element: style="font-size:50%" --> Note: 内包表記の記法は Python に類似っ かつ、`for` にカンマ区切りで複数のイテレータを渡すことで2次元以上の配列も作成可能っ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### 配列の内包表記 (2) ```julia julia> [(a,b,c) for c=1:15,b=1:15,a=1:15 if a^2+a*b+b^2==c^2] 6-element Array{Tuple{Int64,Int64,Int64},1}: (3, 5, 7) (5, 3, 7) (6, 10, 14) (7, 8, 13) (8, 7, 13) (10, 6, 14) ``` Note: Python と同様に `if` で条件を指定することも可能っ あと Python と同様、`[○ for ○=○]` を `(○ for ○=○)` と書くと配列ではなくて `Generator` が返りますっ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### ベクトル ```julia julia> x = [1., 2., 3.]; y = [3., 1., 2.]; julia> x + y # `x .+ y` と書いても同じ(elementwise operation) [4., 3., 5.] julia> x .* y # これは `x * y` と書くとNG [3., 2., 6.] julia> using LinearAlgebra julia> x ⋅ y # 内積(dot積、`dot(x, y)` と書いても同じ) 11.0 julia> x × y # 外積(cross積、`cross(x, y)` と書いても同じ) [1., 7., -5.] ``` <!-- .element: style="font-size:50%" --> Note: Julia では実は1次元配列がベクトルの扱いっ `⋅` は `\cdot`+<kbd>Tab</kbd>、`×` は `\times`+<kbd>Tab</kbd>(これらを利用するには `using LinearAlgebra` 必要)っ あとこれらや先ほどの `÷` や `⊻` などのように、ASCIIの範囲を超えたUnicode文字の演算子(そのほとんどが $\TeX$ 由来)が Julia にはたくさんあります(他には例えば比較演算子の `≤` `≥` や、集合の要素 `∈` や包含関係 `⊆` などなど) ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### 行列 ```julia julia> A = [1 2; 3 4] # この記法は MATLAB/Octave 由来 2×2 Array{Int64,2}: 1 2 3 4 julia> A' # `○'` は転置行列の記法(これも MATLAB/Octave 由来) 2×2 LinearAlgebra.Adjoint{Int64,Array{Int64,2}}: 1 3 2 4 julia> transpose(A) # 正確には転置行列はこっち 2×2 LinearAlgebra.Transpose{Int64,Array{Int64,2}}: 1 3 2 4 ``` <!-- .element: style="font-size:50%" --> Note: Julia では2次元配列が行列の扱いっ あと `○.'` という書式は廃止されました(`transpose(A)` 使ってね)っ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### 行列の演算 ```julia julia> A = [1 2; 3 4]; B = [3 0; 0 6]; julia> A + B # A .+ B でも同様 2×2 Array{Int64,2}: 4 2 3 10 julia> A * B # matrix multiply 2×2 Array{Int64,2}: 3 12 9 24 julia> A .* B # elementwise multiply 2×2 Array{Int64,2}: 3 0 0 24 ``` <!-- .element: style="font-size:48%" --> Note: 行列は `*` で通常の行列積になりますっこれ便利っ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### ブロードキャスト ```julia julia> sin(0.1) 0.09983341664682815 julia> sin.([0.1, 0.2, 0.3, 0.4]) 4-element Array{Float64,1}: 0.0998334 0.198669 0.29552 0.389418 julia> [0.1, 0.2, 0.3, 0.4] .^ 2 # => [0.01, 0.04, 0.09, 0.16] ``` <!-- .element: style="font-size:50%" --> Note: 関数名と `(` の間に `.` を置くと、普通の関数を配列に拡張してくれる(ブロードキャスト)っ `.^` のように演算子の前に `.` を書いても同様(先ほど出た `.+` `.*` もブロードキャスト)っ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### 関数定義 ```julia julia> f(x) = x^2 + 2x - 1 f (generic function with 1 method) julia> f(1) 2 julia> f.(1:5) # => [2, 7, 14, 23, 34] ``` Note: 数学のように直感的な記述で関数を定義可能っ `2x` は `2*x` の省略形、曖昧さがなければリテラルと他の識別子が続く場合などに勝手に乗算と解釈してくれるっ またユーザ定義関数も `.` をつけて自動的にブロードキャスト対応っ ---- <!-- .slide: data-background-color="rgba(213,99,92,0.3)" --> ### 有理数・複素数 ```julia julia> 1//2 == 0.5 true julia> 1//2 - 1//3 1//6 julia> 1im ^ 2 == -1 true julia> (1.0 + 0.5im) * (2.0 - 3.0im) 3.5 - 2.0im ``` Note: 有理数・複素数を標準サポート。 `//` は有理数除算(結果は有理数) `im` は虚数単位。 どちらも四則演算も普通に書けますっ --- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> # Gen の紹介 ---- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> ## Gen<br><small>【dʒɛn】</small> + A **Gen**eral-Purpose Probabilistic Programming System with Programmable Inference + [Overview](https://probcomp.github.io/Gen/) + [Source](https://github.com/probcomp/Gen) on GitHub + [論文](https://doi.org/10.1145/3314221.3314642) Note: っ ---- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> ## Gen とは + 汎用確率的プログラミングシステム + Julia の機能を使って構築 (Gen on Julia ?) + MIT が 2019/06/26 に発表([原文記事](https://www.zdnet.com/article/mit-were-building-on-julia-programming-language-to-open-up-ai-coding-to-novices/)、[日本語版記事](https://japan.zdnet.com/article/35139247/)) Note: Ruby on Rails みたいなっ ---- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> ![Figure 1. Comparison of Gen’s architecture to a standard probabilistic programming architecture. ](https://i.imgur.com/vpiatZX.png) <span>出典:論文( https://doi.org/10.1145/3314221.3314642 )<!-- .element: style="font-size:40%" --></span> Note: アーキテクチャこんな感じっ ---- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> ## Gen の主な特徴 + Generative Function + 確率モデルをカプセル化 + 相互運用可能なモデリング言語 + 柔軟性と効率の両立 + 抽象化された推論ライブラリ + 効率的なアルゴリズムをプラグイン Note: っ ---- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> ## Gen でできること ※ 一例 <!-- .element: style="font-size:80%;text-align:left" --> + (ふつうの)機械学習(DeepLearning含む) + Object Tracking + 3D Body Pose Inference + Time Series Structure Estimation Note: 論文で紹介されている例を中心にっ 要するに「確率的」と名の付くものならなんでも! 「推定」「推論」するものならなんでも! ---- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> ![Figure 5a. body pose inference](https://i.imgur.com/BIWJtI7.png) <span>出典:論文( https://doi.org/10.1145/3314221.3314642 )<!-- .element: style="font-size:40%" --></span> Note: 点群からの3D体姿勢推定っ --- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> ## Gen の使用例 Note: 論よりコードっ ---- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> ### MNIST の学習 Note: GenTF を利用。バックエンドで Tensorflow が動くサンプルっ ---- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> #### 前準備 (1) ```julia= using Gen using GenTF using PyCall @pyimport tensorflow as tf @pyimport tensorflow.nn as nn ``` Note: すでに Tensorflow のラッパーが用意されているので、ありがたく利用しますっ ---- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> #### 前準備 (2) ```julia=+ function weight_variable(shape) initial = 0.001 * randn(shape...) tf.Variable(initial) end function bias_variable(shape) initial = fill(.1, shape...) tf.Variable(initial) end function conv2d(x, W) nn.conv2d(x, W, (1, 1, 1, 1), "SAME") end function max_pool_2x2(x) nn.max_pool(x, (1, 2, 2, 1), (1, 2, 2, 1), "SAME") end ``` Note: っ ---- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> #### グラフ構築 ```julia=+ xs = tf.placeholder(tf.float64) # N x 784 W_conv1 = weight_variable([5, 5, 1, 32]) b_conv1 = bias_variable([32]) x_image = tf.reshape(xs, [-1, 28, 28, 1]) h_conv1 = nn.relu(tf.add(conv2d(x_image, W_conv1), b_conv1)) h_pool1 = max_pool_2x2(h_conv1) W_conv2 = weight_variable([5, 5, 32, 64]) b_conv2 = bias_variable([64]) h_conv2 = nn.relu(tf.add(conv2d(h_pool1, W_conv2), b_conv2)) h_pool2 = max_pool_2x2(h_conv2) W_fc1 = weight_variable([7*7*64, 1024]) b_fc1 = bias_variable([1024]) h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*64]) h_fc1 = nn.relu(tf.add(tf.matmul(h_pool2_flat, W_fc1), b_fc1)) W_fc2 = weight_variable([1024, 10]) b_fc2 = bias_variable([10]) probs = nn.softmax(tf.add(tf.matmul(h_fc1, W_fc2), b_fc2), axis=1) ``` <!-- .element: style="font-size:40%" --> Note: っ ---- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> #### TFFunction 構築 ```julia=+ const params = [W_conv1, b_conv1, W_conv2, b_conv2, W_fc1, b_fc1, W_fc2, b_fc2] const net = TFFunction(params, [xs], probs) ``` Note: TFのグラフをラップしてJuliaで呼び出せるようにしたものっ ---- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> #### モデル(GenerativeFunction)構築 ```julia=+ @gen function f(xs::Matrix{Float64}) (N, D) = size(xs) # @assert D == 784 probs = @trace(net(xs), :net) # @assert size(probs) == (N, 10) ys = Vector{Int}(undef, N) for i=1:N ys[i] = @trace(categorical(probs[i,:]), (:y, i)) end return ys end ``` Note: っ ---- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> #### 学習 ```julia=+ update = ParamUpdate(ADAM(1e-4, 0.9, 0.999, 1e-08), net); function datagenerator end # 実装略 scores = Gen.train!(f, data_generator, update; num_epoch=100, epoch_size=1, num_minibatch=10, minibatch_size=1, verbose=true) ``` Note: っ ---- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> #### 学習結果プロット ```julia= plot(scores) xlabel("iterations of ADAM") ylabel("Estimate of expected conditional log likelihood") ``` Note: っ ---- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> ![学習曲線](https://i.imgur.com/O8oxWvq.png) Note: この学習曲線、よく見るヤツと天地が逆なので注意っ ---- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> #### 推論 ```julia= # test_x / text_y は検証用データ TP = 0 for i = 1:100:length(test_y) x = test_x[i:i+99, :] true_y = test_y[i:i+99] pred_y = f(x) TP += sum(true_y .== pred_y) end println("Accuracy: $(TP / length(test_y))") # => Accuracy: 0.8915 ``` Note: 推論するときは普通の関数呼び出し(`pred_y = f(x)`)となっていることに注目っ ---- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> {%gist antimon2/de50aebe5ac66684cfe725448e47ae3a%} Note: GenTF のサンプルで用意されている convnet 利用した学習を Jupyter Notebook 上で試行っ ---- <!-- .slide: data-background-color="rgba(96,173,81,0.3)" --> ### Gen の現状 + お試しでインストールできる(Julia 公式パッケージ化されていない) + DockerFile も用意されている(自分で構築) + サンプル・内部実装等まだまだこれから? + Document も TODO 目立つ Note: 1つ前のスライドの Notebook は Docker 環境で動くよっ --- <!-- .slide: data-background-color="rgba(170,121,193,0.3)" --> # まとめ ---- <!-- .slide: data-background-color="rgba(170,121,193,0.3)" --> + Gen の今後に注目! + Julia 良いよ楽しいよ! Note: っ ---- <!-- .slide: data-background-color="rgba(170,121,193,0.3)" --> ## 参考リンク + [Gen](https://probcomp.github.io/Gen/) (github.io) + [Gen](https://github.com/probcomp/Gen) / [GenTF](https://github.com/probcomp/GenTF) / [GenViz](https://github.com/probcomp/GenViz) (GitHub) + [gen-quickstart](https://github.com/probcomp/gen-quickstart) (Tutorial) + [Juliaで話題のGen/チュートリアルの環境構築](https://www.mathwithjulia.com/entry/2019/07/01/213306) - [眠気.jl](https://www.mathwithjulia.com) --- <!-- .slide: data-background-color="rgba(170,121,193,0.3)" --> # おまけ ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> ## JuliaTokai <!-- .element: style="font-size: 360%" --> Note: 姉妹勉強会の簡単な紹介っ ---- <!-- .slide: data-background="https://i.imgur.com/W9XmGgz.jpg" data-background-color="rgba(102,130,223,0.3)" --> Note: 前回の勉強会の様子 ![前回の勉強会の様子](https://i.imgur.com/W9XmGgz.jpg) ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> [![JuliaTokai グループページ - connpass](https://i.imgur.com/QNBhPW0.jpg)https://juliatokai.connpass.com/](https://juliatokai.connpass.com/)<!-- .element: style="font-size: 80%" --> Note: 勉強会の告知・募集サイトっ! ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> ### 勉強会の内容 + [Julia](https://julialang.org) の東海地方ユーザグループ + Julia に関すること、以外特にテーマは決めない! + 基本、もくもく会 Note: 難しくないよーこわくないよー ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> ### 次回 [![JuliaTokai #04 @道の駅とよはし](https://i.imgur.com/iRQj2Rv.png) https://juliatokai.connpass.com/event/145293/](https://juliatokai.connpass.com/event/145293/) Note: 2019/10/03(土):第4回開催!@道の駅とよはしっ 次回は、発表多めだと良いなっ! ---- <!-- .slide: data-background-color="rgba(44,214,221,0.3)" --> ## 来栖川電算 Note: スポンサー枠っ ---- <!-- .slide: data-background="https://i.imgur.com/5CbxlN7.jpg" data-background-color="rgba(44,214,221,0.3)" --> Note: ![募集中!](https://i.imgur.com/5CbxlN7.jpg) --- <!-- .slide: data-background-color="rgba(170,121,193,0.3)" --> ご清聴ありがとうございます。 Note: ご清聴ありがとうございますっ!
{"metaMigratedAt":"2023-06-14T23:37:39.402Z","metaMigratedFrom":"YAML","title":"Gen の紹介","breaks":false,"slideOptions":"{\"transition\":\"slide\",\"theme\":\"league\"}","contributors":"[{\"id\":\"80062a4b-8dad-49ac-95bf-848ce0686e9e\",\"add\":8749,\"del\":4804}]"}
    1568 views