2018年7月16日 星期一

FEDC 2018 小記

這次是第一次參加 FEDC,主要是參與前端的議程。

Path of web design modularization

模式化從我離開學校後,一直從別人口中聽到的字眼,總是說如果你的軟體可以快速的簡單的更換功能,就像樂高一樣,那就 bla bla bla

原本對這個議程有多的期待的,但是總覺得的是空談。
到底是先有頁面再切元件,還是有規劃元件再來組成頁面。

我想只有賣套裝軟體的才能賣元件給客戶組畫面吧(笑)。就像 MS office

在  Q&A 中,有人提出依 Atomic Design 當所有元素被拆細的時候,要再組出第二個元件的時候很可能缺漏部份 CSS 這時候該怎麼辦?如果說以魔鬼藏在細節中來說的話 Atomic Design 就像製造出了很多的魔鬼,可惜講者沒有明確的 Solution

結論:要怎麼拆不是問題,怎麼再組合才是問題 

10F - PureScript for JavaScript Developers

第一次接觸 PureScript ,果然跟事先在網路查的一樣,是數學阿.....
概念很不錯,但是覺得很難實作阿.....

Learn Tensorflow.js in 30 minutes

之前就有了解過一些 Tensorflow 內容大概如預期的一樣。

The (Finite) State of Reactive Animations

透過 State + Event 來規劃整個 UI 設計,蠻同講者的概念,把所有的狀態列出並透過事件的串聯,完成完整的操作流程。
不過這東西常常是聽別人說簡單套用到實作時到就遇到了太複雜的困難。
 講者提供了很不錯的工具
https://github.com/davidkpiano/xstate



2018年2月12日 星期一

fast.ai 學習筆記 - mnist 篇

簡單筆記

搭配資料:https://github.com/fastai/courses/blob/master/deeplearning1/nbs/mnist.ipynb

MNIST

手寫數字資料集,每個數字解析度都相同,固定為 28 x 28 的大小,ML界中的"Hello World!"
在 keras 中的匯入方式很簡單
```
from keras.datasets import mnist
```

np.expand_dims (numpy.expand_dims)

增加"一個"指定的維度在傳入的資料上,指定維度的範圍為被操作資料維度(n)的 n+1 中
例如:傳為的資料為 2 維資料,所以可以增度的維度為 0, 1, 2
在 mnist.ipynb 中,增加第二個維度,用以代表字體的灰階
Test code: http://ec2-35-163-5-73.us-west-2.compute.amazonaws.com:8888/notebooks/workspace/%5Btest%5D%20expand_dims%20.ipynb#

```
# 參數1:被操作的資料(不一定要是 Array )
# 參數2:增加在那一個維度
X_test = np.expand_dims(X_test,1)
```

onehot (OneHotEncoder)

簡化資料的一種手段,類似把填空變成選擇題
例如:原本的有[白天]、[晚上]兩種資料,經過 on hot encoder 後就會變為 [1,0] [0,1]
又例如,[眼睛][鼻子][嘴巴][耳朵]會轉換為[1,0,0,0][0,1,0,0][0,0,1,0][0,0,0,1]
在 mnist.ipynb 中用來轉換 0-9 的數字,數字5 就變成 [ 0., 0., 0., 0., 0., 1., 0., 0., 0., 0.]

pn.mean

求取均值,義意不明

pn.std

求標準差,義意不明

Sequential

Linear stack of layers

Flatten

把Array 從多維變單維
Test code: http://ec2-35-163-5-73.us-west-2.compute.amazonaws.com:8888/notebooks/workspace/%5Btest%5D%20Flatten.ipynb


Linear model

第一層:Lambda - normalize 圖檔,每張圖的資訊為 彩度灰階 1,  寬 28, 高 28px
第二層:Flatten - 攤平圖檔資訊 1x28x28
第三層:Dense - 歸類為 10 類 ( 數字 0-9)