# PyCon TW 2016 Collaborative Talk Notes <br> Day 2 - R0
> ### Quick Links
> - [Portal for Collobration Notes 共筆統整入口](https://hackfoldr.org/pycontw2016) (hosted by [hackfoldr](https://hackfoldr.org/about) and [HackMD](https://hackmd.io/))
> - [Program Schedule 議程時間表](https://tw.pycon.org/2016/events/talks/)
> - [PyCon TW 2016 Official Site 官網](https://tw.pycon.org/2016/)
>
> ### How to update this note?
> - Everyone can *freely* update this note. 任何人都能自由地更新內容。
> - Please respect all the participants and follow our [code of conduct](https://tw.pycon.org/2016/about/code-of-conduct/) during discussion. 討論、記錄時,請遵守大會的[行為準則](https://tw.pycon.org/2016/about/code-of-conduct/)。
## Talk: 用Numpy做一個自己的股票分析系統
- Info: https://tw.pycon.org/2016/events/talk/35734163478806534/
- Speaker: PF
- Slides: http://slides.com/iampf/pycon-2016
- 歷史資料可從台灣期貨交易所、台灣證卷交易所
- 分析資料:時間、開盤價、收盤價、最高價、最低價、成交量
- 買賣情況分三種:買進、賣空、不動
- itertools!!
- np.convolve np.piecewise
- multiprocess
- GPU: PyCuda(還是要寫C!! orz)
- Amcharts.js jQuery Flask Sqlite
- 有問題可以找 pf@hst.tw
## Talk: 轉轉轉好運旺來一起來之雲端轉檔大作戰!
- Info: https://tw.pycon.org/2016/events/talk/70089712156541000/
- Speaker: 林進錕
- Slides: http://www.slideshare.net/ssuser25242a/ss-62714359
##### 已有可用的套件
* Gearman: 從 worker 出發的 workflow,但是workflow寫死在worker中了
* Spotify Luigi
* Others(Tractor, Celery...)
##### What we need
* 不想管理 Job Server
* 去中心化
* 自我管理
* 晚上好好睡覺 XD
* Top-down: Wroker 可以根據需要,調整種類或需要
#### [KKBOX 的 MASS 套件](https://github.com/kkbox/mass)
## Talk: Continuous Deployment in AWS Lambda and Python
- Info: https://tw.pycon.org/2016/events/talk/69186595164520503/
- Speaker: Suiting
- Slides: http://bit.ly/1sssLYO
#### Deploy pipeline
developer -> github -> jenkins -> S3 -> lambda deployer
## Talk: Deep Learning with Python & TensorFlow
- Info: https://tw.pycon.org/2016/events/talk/56874546946375700/
- Speaker: Ian Lewis
- Twitter @IanMLewis
- [線上演講影片](https://www.youtube.com/watch?v=2hYljESm0eQ&feature=youtu.be#t=2h35m15s)
- specific field of ML -> ANN -> deep ANN
- ANN good at: classification problem
- Tensor: n-dim arrary
DNN = a large matrix operations
You need distributed training
[Google揭露首款自製機器學習專用晶片TPU](http://www.ithome.com.tw/news/106042)
- [Tensorflow](https://www.tensorflow.org/)
- core is cpp-based (thus fast computation) and provide python interface
- Graph: dataflow graph
- core concepts
- constants
- Placeholders: fed with data on execution
- Variables
- Sessions
- Operations
- [MNIST Tutorials](https://www.tensorflow.org/versions/master/tutorials/index.html)
[Jeff Dean's Talk](YoutubeLink)
[Tensorflow workshop](https://github.com/amygdala/tensorflow-workshop)
> 根本通靈
> NN 就是個 black box, 過程做了什麼都不知道
>[一天搞懂深度學習]( http://www.slideshare.net/tw_dsconf/ss-62245351)
> 這個 notebook 找得到嗎
> 什麼東西notebook找的到?
> 目前正在講的 jupyter notebook
> [jupyter](https://github.com/jupyter)
> 你說的是這個檔案對嗎
> 對的
> 可能在他電腦裡? 不知道有沒有公布QQ
> github 裡有一個 [notebook](https://github.com/jupyter/notebook) 項目
> ask him for sharing the note after talk?
> 從他的twitter來看,這是他第一次講這題目
> jupyter 大多用在爬蟲
> 做data science的也大量再用jupyter喔~~~
> 話說~~ jupyter notebook就是ipython notebook
## Talk: 機器學習在搜尋排序上的應用
- Info: https://tw.pycon.org/2016/events/talk/62015679733170217/
- Speaker: Jiawei Chen
- (請問沒有投影片嗎?)https://goo.gl/dt9Rii
### 共筆
搜尋引擎
1. indexing
2. 搜尋結果排序方式:
- tf-idf term frequency–inverse document frequency
- click model 點擊模型
- PageRank
3. 萬一搜尋結果不理想
- 初步想法就是去調特徵的權重
- 加入更多特徵值
- 訓練好主題模型,抽取出其特徵值再加入
* [RankBrain](https://en.wikipedia.org/wiki/RankBrain)
* [Learning to rank with scikit-learn: the pairwise transform](http://fa.bianp.net/blog/2012/learning-to-rank-with-scikit-learn-the-pairwise-transform/)
* [Letor Dataset](http://research.microsoft.com/en-us/um/beijing/projects/letor/)
* [xgboost 模型](https://github.com/dmlc/xgboost)
## Talk: Write your own micro data processing framework in python
- Info: https://tw.pycon.org/2016/events/talk/69113918303240246/
- Speaker: David Chen
- [Slides]( https://github.com/lucemia/slides/blob/master/slides/micropipeline.md)
* gliacloud.com
* What is a data processing framework; what is a taskflow...
* [TaskFlow (OpenStack)](https://wiki.openstack.org/wiki/TaskFlow)
* [Luigi (Spotify)](https://github.com/spotify/luigi)
* [DataFlow (Google)](https://cloud.google.com/dataflow/)
* [Django-p](https://django-pipeline.readthedocs.io/en/latest/)
* [Google Pipeline API](https://github.com/GoogleCloudPlatform/appengine-pipelines)
#### Design of Django-P
* pipe: abstraction of pipline
* future: the return value from pipline would be given in the future
* pipeline: store config to db
* slot: store pipeline execution results
* barrier: to prevent running before its dependent task completed
Implemented by Python generator, thus, *asynchronous* programming can be achieved.
## Talk: Neural Art -- Become a Great Artist by Deep Learning Algorithm
- Info: https://tw.pycon.org/2016/events/talk/27429730160476163/
- Speaker: Mark Chang
- Slides: http://www.slideshare.net/ckmarkohchang/neural-art-english-version
- Source Code of Neural Art: https://github.com/ckmarkoh/neuralart_tensorflow
#### 人類藝術家是怎麼畫畫的
論文: [A Neural Algorithm of Artistic Style](http://arxiv.org/pdf/1508.06576v2.pdf)
1. 看到畫面然後變成訊號
2. 混上自己的風格特色
3. 畫出來
#### Visual Perception
- 最小的單元 - Neuron 神經元
- Neuron 結合起來形成 visual pathway
#### Visual Pathway
- 視網膜接收到的訊號會透過相互連接的神經元所形成的 visual pathway 傳送到 visual area
##### Visual Area V1
這個部分只會感覺到線條
##### Visual Area V4
這個部分能夠認知方形、三角形、圓形等幾何圖形
##### Inferior Temporal Gyrus
這可以認知到更複雜的圖像
#### Misconception 錯覺
是這個演算法能成功很重要的一個環節
在例子當中,有兩個相同顏色的灰點,如果我們幫他們加上不同顏色的背景,那他們的顏色看起來就會不同。
如果有兩條平行的線,幫他加上同心圓,那看起來就會變得扭曲
如果有兩條一樣長的線,幫他們加上不同角度的兩側就會看起來不一樣長
> "misconception"?? <-- does he mean "false perception" or "illusion"??
> not sure about the differences between them
> "misconception" = "誤解"
#### Computer Vision
- Neural Networks
X: input signals
w: weight of each input signals
n: linear combination of input signals
Sigmoid, Rectified Linear Function (non-linear function)
sigmoid: 如果 input 趨近於零,那輸出就會是 0
Rectified Linear: 如果輸入小於 0,那輸出就會是零,如果大於零,則保持原輸出
> input layer > hidden layer > output layer
#### Convolutional Neural Networks
responsible for visual signals
duplicate neuron with same weight in different position to sense the color, shape, ...
- stride
- padding
- pooling: maximum/average pooling
> Input layer > Convolutional layer > Pooling > ??? > Pooling > Output layer
在 Convolutional layer ,會辨識出線,在 Pooling ... 等三層,可以辨識出方形、圓形等形狀
#### VGG 19 (Convolutional Layer)
[Very deep convolutional networks for large-scale image recognition](https://arxiv.org/pdf/1409.1556.pdf)
這個演算法在 ImageNet 2014 獲得冠軍的獎項
他有 19 + 5 個層
pre-trained parameter can be downloaded online
不用再自己訓練資料,訓練資料十分耗時
#### Neural Art
模仿人類藝術家畫畫
人類藝術家看到 101 -> 腦海生成畫面(不是真的 101,只是訊號,因為有錯覺,所以他不知道真實的樣子,只知道大概的樣子) -> 只能盡量把畫出來的和真實畫像的差異降低。
VGG 19 是一個商業化軟體,有很高的精確度去辨識出圖像來
第一層會記錄下 location,
##### Content Generation
Input Photo P、Input Canvas x 各自丟入VGG19再minimize兩者的差利用backpropogation修正canvas的RGB value
higher layer會讓圖的細節loss越多,因為neural network是模仿人類的visual path
你可以看到一次又一次的,畫出來的畫像和真實的照片越來越相近
##### Style Generation
"Style" is position-independent --> Gram Matrix
我們把有風格的圖畫餵給 VGG19,把他轉換成 Gram Matrix,產生出 Style Image
在第一層,我們只能看到有細碎的風格,隨著層數往後,我們能更清楚的看到風格的細節
##### Artwork Generation
Content vs Style
在創造結果時,我們不要原圖的細節,所以我們只取較後面的層,
在抽畫風的時候則要保留細節,可以把layer疊在一起
Initial State 對於最後的結果也有很重要的影響,
如果完全沒有對於產生的圖像有任何提示的話,那會和風格輸入的圖片很相近,如果有一些提示(大樓的陰影等),那就會和我們要的結果比較相近,如果把台北 101 的照片餵進去作為 Initial State 的話,那產生出來的就會是最精確的有畫作風格的圖片。
#### Recurrent Neural Network (RNN)
language model for generating poet