Skip to content

Commit 43861c3

Browse files
committedDec 26, 2019
Fix typos, line separation
1 parent 2bf67fe commit 43861c3

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed
 

Diff for: ‎_posts/2019-02-08-python-line-profiler.md

+8-7
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@ date: 2019-02-08 22:30:00
1212
---
1313

1414
## เกริ่นนำ
15-
ในการเขียนโปรแกรมนอกจากความถูกต้องในการทำงานของโปรแกรมแล้ว เราต้องการโปรแกรมที่ทำงานได้รวดเร็ว แต่บางทีเราก็ไม่รู้ว่าจะต้อง Optimize โปรแกรมกันตรงไหน วันนี้ผมจึงมาแนะนำการใช้งาน [line_profiler](https://github.com/rkern/line_profiler) เพื่อทำ profiler ในการตรวจสอบความเร็วในการทำงานของโค้ด Python ในแต่ละบรรทัดกันเลย
1615

16+
ในการเขียนโปรแกรมนอกจากความถูกต้องในการทำงานของโปรแกรมแล้ว เราต้องการโปรแกรมที่ทำงานได้รวดเร็ว แต่บางทีเราก็ไม่รู้ว่าจะต้อง Optimize โปรแกรมกันตรงไหน วันนี้ผมจึงมาแนะนำการใช้งาน [line_profiler](https://github.com/rkern/line_profiler) เพื่อทำ profiler ในการตรวจสอบความเร็วในการทำงานของโค้ด Python ในแต่ละบรรทัดกันเลย
1717

1818
## ติดตั้ง
19+
1920
ติดตั้ง Package ผ่าน pip กันตามปกติ
2021

2122
```bash
@@ -31,11 +32,11 @@ import time
3132

3233
@profile
3334
def number():
34-
s = 0
35-
for i in range(500):
36-
s += i
37-
time.sleep(1)
38-
return s
35+
s = 0
36+
for i in range(500):
37+
s += i
38+
time.sleep(1)
39+
return s
3940

4041
print(number())
4142
```
@@ -84,7 +85,7 @@ python -m line_profiler test.py.lprof
8485
```python
8586
%lprun -f [function name] [call function]
8687

87-
#Example
88+
# Example
8889
%lprun -f number number()
8990
```
9091

Diff for: ‎_posts/2019-12-18-reinforcement-learning.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ $$Q(S_t, A_t) \leftarrow Q(S_t, A_t) + \alpha (R_{t+1} + \gamma \max_{a \in A} Q
169169
เราสามารถแก้ปัญหาใน Continuous Space ได้สองวิธีหลักๆดังนี้
170170

171171
- Discretization หรือการแบ่ง continuous state space ให้เป็นช่วงๆ
172-
- Function Approximation หรือใช้ฟังก์ชันประมาณ​ state value \\(\hat(v)(s) \\) และ action value \\(\hat(q)(s, a)\\) โดยตรง
172+
- Function Approximation หรือใช้ฟังก์ชันประมาณ​ state value \\(\hat{v}(s) \\) และ action value \\(\hat{q}(s, a)\\) โดยตรง
173173

174174
วิธีที่ง่ายที่สุดที่ทำให้เราสามารถใช้เทคนิคที่เพิ่งคุยกันไปมาใช้ก็คือการแบ่ง continuous state space เป็นช่วงๆหรือการ discretization นั่นเอง เราสามารถแบ่งช่องยิ่งเล็กก็จะยิ่งประมาณ continuous space ได้ดีขึ้น แต่ข้อเสียก็คือว่าขนาดของ Q-table ที่เราต้องสร้างก็จะใหญ่ขึ้นไปอีก และเมื่อ Q-table มีขนาดใหญ่มากๆ ก็อาจจะอัพเดทได้ไม่ทั่วถึงนั่นเอง
175175

@@ -187,7 +187,7 @@ $$Q(S_t, A_t) \leftarrow Q(S_t, A_t) + \alpha (R_{t+1} + \gamma \max_{a \in A} Q
187187

188188
อีกวิธีนึงที่เราสามารถทำได้คือการประมาณฟังก์ชัน state value \\(\hat{v}(s) \\) และ action value \\(\hat{q}(s, a)\\) นั่นเอง ในกรณีนี้ก็ไม่ต้องใช้การแบ่ง continuous space เป็นช่วงๆแบบเดิม จะเห็นว่าสิ่งที่เราต้องใส่เพิ่มขึ้นมาขึ้นพารามิเตอร์ \\(W \\) ที่ใช้สำหรับ map ฟังก์ชันจาก \\(s\\) ไปเป็น \\(v\\) และ \\((s, a)\\) ไปเป็น \\(q\\)
189189

190-
ในกรณีที่เราเขียนฟังก์ชันเส้นตรง: \\( \hat{v}(s, W) = X(s)^T W_{v} \\) และ \\( \hat{q}(s, a, W) = X(s, a)^T W_{q} \\) หรือถ้าเป็นฟังก์ชันไม่เชิงเส้น (nonlinear) ก็จะได้หน้าตาประมาณนี้: \\( \hat{v}(s, W) = f_v(X(s)^T W_{v}) \\) และ \\( \hat{q(s, a, W)} = f_q(X(s)^T W_{q}) \\) ซึ่งฟังก์ชัน \\(f(.)\\) ในที่นี้เราอาจจะเลือกใช้ Neural Network มาช่วยในการประมาณฟังก์ชันไม่เชิงเส้นที่เรามีนี่เอง ตัวอย่วงของการใช้ Neural Network มาประมาณฟังก์ชันได้แก่ Deep Q-Network หรือ DQN ที่จะพูดในหัวข้อถัดไป
190+
ในกรณีที่เราเขียนฟังก์ชันเส้นตรง: \\( \hat{v}(s, W) = X(s)^T W_{v} \\) และ \\( \hat{q}(s, a, W) = X(s, a)^T W_{q} \\) หรือถ้าเป็นฟังก์ชันไม่เชิงเส้น (nonlinear) ก็จะได้หน้าตาประมาณนี้: \\( \hat{v}(s, W) = f_v(X(s)^T W_{v}) \\) และ \\( \hat{q}(s, a, W) = f_q(X(s)^T W_{q}) \\) ซึ่งฟังก์ชัน \\(f(.)\\) ในที่นี้เราอาจจะเลือกใช้ Neural Network มาช่วยในการประมาณฟังก์ชันไม่เชิงเส้นที่เรามีนี่เอง ตัวอย่วงของการใช้ Neural Network มาประมาณฟังก์ชันได้แก่ Deep Q-Network หรือ DQN ที่จะพูดในหัวข้อถัดไป
191191

192192
## Deep Q-Network (DQN)
193193

0 commit comments

Comments
 (0)
Please sign in to comment.