Upload
alireza-akhavan-pour
View
812
Download
11
Embed Size (px)
Citation preview
(4)اده تحلیل با رویکرد یادگیری ژرف بر بستر کالن ددانشگاه صنعتی شریف، تهران
1جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن داده
[email protected] پورعلیرضا اخوان1395بهمن 6
پوراخوانعلیرضا
www.Bigdataworkgroup.ir
2جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
﴾۲۶﴿وَيَسِّرْ لِي أَمْرِي ﴾۲۵﴿قَالَ رَبِّ اشْرَحْ لِي صَدْرِي
﴾۲۸﴿يَفْقَهُوا قَوْلِي ﴾۲۷﴿وَاحْلُلْ عُقْدَةً مِّن لِّسَانِي
(سوره طه )
Torch
Caffe
Theano (Keras, Lasagne)
CuDNN
Tensorflow
Mxnet
...
پوراخوانعلیرضا
جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن داده
3
چارچوب های
یادگیری ژرف
Githubآمار در
4جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
Name release Star Fork
Tensorflow Nov 1, 2015 44k 20k
caffe Sep 8, 2013 15k 10k
keras Mar 22, 2015 11k 4k
mxnet Apr 26, 2015 8k 3k
torch Jan 22, 2012 6k 2k
theano Jan 6, 2008 5k 2k
Last update: 2017 22 January
آمار جست و جو در گوگل
5جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
https://www.google.com/trends/explore?date=today 12-m&q=tensorflow tutorial,torch tutorial,theano tutorial,caffe tutorial,Mxnet tutorial
!معیارهای انتخاب چارچوب؟
6جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
!یا برنامه نویسی؟فایل پیکربندی•• Configuration file: Caffe, DistBelief and CNTK
• programmatic generation: Torch, Theano and Tensorflow
انتخاب زبان برنامه نویسی•• Lua (Torch) vs. Python (Theano, Tensorflow) vs others
Tensorflowو Theanoمقایسه
7جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
توزیع پذیری
سرعت
کاربرد
عملی
آکادمیک
https://github.com/soumith/convnet-benchmarks (Soumith Chintala , Facebook AI Research)
2015
2016
چه کسانی از تنسورفلو استفاده می کنند؟
8جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
پوراخوانعلیرضا
جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن داده
9
ومبانی تنسورفل
ه استکه اخیرا به صورت متن باز منتشر شدفریم ورک یادگیری ژرف گوگل.عملیات محاسباتی بهینه و مشتق گیری
محاسبه ی گرادیان گراف
تنسور چیست؟
10جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
،آرایه ی به عبارت سادهnبعدی از اعداد
گراف جریان داده
11جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
ترا جدا کرده اساجرااز محاسباتتعریف تنسورفلو.
تعریف گراف محاسباتی: 1گام
.این گرافاجرای عملیات در نشست برای استفاده از یک : 2گام
گراف جریان داده
import tensorflow as tf
a = tf.add(2, 3)
12جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
!؟yوxچرا .می دهداگر به صورت صریح رئوس گراف محاسباتی را نام گذاری نکنید، تنسورفلو به صورت خودکار به آن ها نام نسبت
در این مثالx = 2
y = 3
numpyبرنامه ی ساده ی استفاده از
13جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
بازنویسی با تنسورفلو
14جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
In [2]: import tensorflow as tf
In [3]: tf.InteractiveSession()
In [4]: a = tf.zeros((2,2)); b = tf.ones((2,2))
In [5]: tf.reduce_sum(b, reduction_indices=1).eval()
Out[5]: array([ 2., 2.], dtype=float32)
In [6]: a.get_shape()
Out[6]: TensorShape([Dimension(2), Dimension(2)])
In [7]: tf.reshape(a, (1, 4)).eval()
Out[7]: array([[ 0., 0., 0., 0.]], dtype=float32)
session؟!
!؟ eval
TensorShape مثلtuple هااد ر یااد و
رف در میکنند
Tensorflowو numpyمقایسه ی استفاده از
15جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
Numpy TensorFlow
a= np.zeros((2,2)); b = np.ones((2,2)) a= tf.zeros((2,2)), b = tf.ones((2,2))
np.sum(b, axis=1) tf.reduce_sum(a,reduction_indices=[1])
a.shape a.get_shape()
np.reshape(a, (1,4)) tf.reshape(a, (1,4))
b * 5 + 1 b * 5 + 1
np.dot(a,b) tf.matmul(a, b)
a[0,0], a[:,0], a[0,:] a[0,0], a[:,0], a[0,:]
داردنیاز تنسورفلو به ارزیابی صریح
16جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
In [5]: a = np.zeros((2,2))
In [6]: ta = tf.zeros((2,2))
محدسبدتیگرافیکتنسورفلوابیارزیکهزمانیتاکهمیکندتعریف!نداردعددیمقدارهیچنشود
In [7]: print(a)
[[ 0. 0.]
[ 0. 0.]]
In [8]: print(ta)
Tensor("zeros_1:0", shape=(2, 2), dtype=float32)
In [9]: print(ta.eval())
[[ 0. 0.]
[ 0. 0.]]
(1)تنسورفلو در ( session)شئ نشست
17جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
Tensorflow_Docs“!که در آن اشیاء تنسور ارزیابی می شوند را کپسوله سازی می کندمحیطیsessionیک شیء ”
In [1]: a = tf.constant(5.0)
In [2]: b = tf.constant(6.0)
In [3]: c = a * b
In [4]: with tf.Session() as sess:
....: print(sess.run(c))
....: print(c.eval())
....:
30.0
30.0
c.eval()معادلsess.run(c)در!فعالsessionمحدودهی
(2)در تنسورفلو ( session)شئ نشست
18جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
.نیمآزادکراآنهااستفادهازبعدبایدحتماوباشدگرفتهاختیاردرمنابعیاستممکنSessionیک
(1)مثال هایی بیشتر از گراف
x = tf.constant(2)
y = 3
op1 = tf.add(x, y)
op2 = tf.mul(x, y)
op3 = tf.pow(op2, op1)
with tf.Session() as sess:
op3 = sess.run(op3)
19جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
(2)گرافمثال هایی بیشتر از x = 2
y = 3
op1 = tf.add(x, y)
op2 = tf.mul(x, y)
useless = tf.mul(x, op1)
op3 = tf.pow(op2, op1)
with tf.Session() as sess:
op3 = sess.run(op3)
20جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
اجرایباop3بهنیازیuselessنمیشود..نمیکنداجراراآننشستپسمحاسباتدرصرفهجویی
(3)گرافمثال هایی بیشتر از x = 2
y = 3
op1 = tf.add(x, y)
op2 = tf.mul(x, y)
useless = tf.mul(x, op1)
op3 = tf.pow(op2, op1)
with tf.Session() as sess:
op3, not_useless = sess.run([op3, useless])
21جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
حالتایندرuselessمیشودمحاسبهنیز.
Variable (1)ها در تنسورفلو که یک مدل را آموزش می دهیم، برای نگه داری پارامتر ها نیاز به تعریف متغیر داریمهنگامی.
variable ها در مواردی به کار می روند که نیاز به به روز رسانی متغیر باشد .TensorFlow_Docs
مانند وزن های شبکه
تمام تنسورهای که در اسالیدهای پیشین مالحظه شد از نوعconstantبودند!
22جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
Variable (2)ها در تنسورفلوIn [32]: W1 = tf.ones((2,2))
In [33]: W2 = tf.Variable(tf.zeros((2,2)), name="weights")
In [34]: with tf.Session() as sess:
print(sess.run(W1))
sess.run(tf.initialize_all_variables())
print(sess.run(W2))
....:
[[ 1. 1.]
[ 1. 1.]]
[[ 0. 0.]
[ 0. 0.]]
23جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
مقداردهیاولیهبرای()tf.initialize_all_variablesفراخوانی
تدبعtf.initialize_all_variables() به زو ی حذف می شو.جد گز ن :tf.global_variables_initializer
Variable (3)ها در تنسورفلو•Variable ها در تنسورفلو حتما باید مقداردهی اولیه شوند(initialize)
!؟constantمقایسه با •
24جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
In [38]: W = tf.Variable(tf.zeros((2,2)), name="weights")In [39]: R = tf.Variable(tf.random_normal((2,2)), name="random_weights")In [40]: with tf.Session() as sess:....: sess.run(tf.global_variables_initializer())....: print(sess.run(W))....: print(sess.run(R))....:
کرداولیهمقداردهیتصادفیمقادیریا(constant)هاثابتباتوانمیراvariableاشیاء
.مقادیرقبالمشخصشدهبامتغیرهامقداردهیاولیهتمام
variableبه روز رسانی یک
25جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
In [63]: state = tf.Variable(0, name="counter")
In [64]: new_value = tf.add(state, tf.constant(1))
In [65]: update = tf.assign(state, new_value)
In [66]: with tf.Session() as sess:
....: sess.run(tf.global_variables_initializer())
....: print(sess.run(state))
....: for _ in range(3):
....: sess.run(update)
....: print(sess.run(state))
....:
new_valueمعد ل = state + 1
state = new_valueمعد ل
معد لstate = 0
print(state)
for _ in range(3):
state = state + 1
print(state)
قطعهکدخروجی:0
1
2
3
(1)ها در تنسورفلو Variableواکشی
26جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
In [82]: input1 = tf.constant(3.0)
In [83]: input2 = tf.constant(2.0)
In [84]: input3 = tf.constant(5.0)
In [85]: intermed = tf.add(input2, input3)
In [86]: mul = tf.mul(input1, intermed)
In [87]: with tf.Session() as sess:
....: result = sess.run([mul, intermed])
....: print(result)
....:
:خروجی[21.0, 7.0]
.میدهدرامتغیرآنمقدار،نشستیکدر sess.run(var)فراخوانی
.کرد(fetch)واکشیهمزمانرامتغیرچندینمیتوان
(2)ها در تنسورفلو Variableواکشی
27جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
input1 = tf.constant(3.0)
input2 = tf.constant(2.0)
input3 = tf.constant(5.0)
intermed = tf.add(input2, input3)
mul = tf.mul(input1, intermed)
with tf.Session() as sess:
result = sess.run([mul, intermed])
print(result)
ورودی
در تمام اسالیدهای پیشین تنسورها به صورت دستی تعریف شده بودند.چگونه از بیرون از تنسورفلو به آن ورودی بدهیم؟!
oConstant
oVariable
o؟!
28جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
استفاده از : راه حل سادهnumpy
numpyورودی با استفاده از
29جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
In [93]: a = np.zeros((3,3))
In [94]: ta = tf.convert_to_tensor(a)In [95]: with tf.Session() as sess:....: print(sess.run(ta))....:[[ 0. 0. 0.][ 0. 0. 0.][ 0. 0. 0.]]
Feed Dictionaryو Placeholderورودی با
30جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
In [96]: input1 = tf.placeholder(tf.float32)
In [97]: input2 = tf.placeholder(tf.float32)
In [98]: output = tf.mul(input1, input2)
In [99]: with tf.Session() as sess:
....: print(sess.run([output], feed_dict={input1:[7.], input2:[2.]}))
....:
[array([ 14.], dtype=float32)]
برایوروددادههاtf.placeholderتعریفاشیاء
Feed data intocomputation graph.
Fetch value of outputfrom computation graph.
ورودی با استفاده ازnumpyامکان پذیر و راحت است، اما مقیاس پذیر نیست.
استفاده ازtf.placeholder وfeed_dict
مثال
31جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
Feed Dictionary (3)و Placeholderورودی با
32جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
In [96]: input1 = tf.placeholder(tf.float32)
In [97]: input2 = tf.placeholder(tf.float32)
In [98]: output = tf.mul(input1, input2)
In [99]: with tf.Session() as sess:
....: print(sess.run([output], feed_dict={input1:[7.], input2:[2.]}))
....:
[array([ 14.], dtype=float32)]
پوراخوانعلیرضا
جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن داده
34
مثال عملی
...مرور
35جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
مثال ساده
36جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
Softmax
𝑌 = 𝑆𝑜𝑓𝑡𝑚𝑎𝑥 ( 𝑋.𝑊 + 𝑏 )
37جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
ییش بینی𝒀[𝟏𝟎𝟎, 𝟏𝟎]
تصدو ر𝑿[𝟏𝟎𝟎, 𝟕𝟒𝟖]
وز هد𝑾[𝟕𝟒𝟖, 𝟏𝟎]
بد دسb[𝟏𝟎]
ضرب مدتر سی
Softmaxدر تنسورفلو
𝑌 = 𝑡𝑓. 𝑛𝑛. 𝑠𝑜𝑓𝑡𝑚𝑎𝑥(𝑡𝑓.𝑚𝑎𝑡𝑚𝑢𝑙(𝑋,𝑊) + 𝑏)
38جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
𝑿[𝟏𝟎𝟎, 𝟕𝟒𝟖] 𝑾[𝟕𝟒𝟖, 𝟏𝟎] b[𝟏𝟎]
ضرب مدتر سی
Tensor shapes:
− 𝑌𝑖′. log(𝑌𝑖)
39جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
Cross entropy: actual probabilities, “one-hot” encoded
computed probabilities
مقداردهی اولیه
40جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
import tensorflow as tf
X = tf.placeholder(tf.float32, [None, 28, 28, 1])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
init = tf.initialize_all_variables()
معیار
41جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
# model
Y = tf.nn.softmax(tf.matmul(tf.reshape(X, [-1, 784]), W) + b)
# placeholder for correct answers
Y_ = tf.placeholder(tf.float32, [None, 10])
# loss function
cross_entropy = -tf.reduce_sum(Y_ * tf.log(Y))
# % of correct answers found in batch
is_correct = tf.equal(tf.argmax(Y,1), tf.argmax(Y_,1))
accuracy = tf.reduce_mean(tf.cast(is_correct, tf.float32))
آموزش
42جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
optimizer = tf.train.GradientDescentOptimizer(0.003)
train_step = optimizer.minimize(cross_entropy)
اجرا
43جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
sess = tf.Session()sess.run(init)for i in range(1000):
# load batch of images and correct answersbatch_X, batch_Y = mnist.train.next_batch(100)train_data={X: batch_X, Y_: batch_Y}# train
sess.run(train_step, feed_dict=train_data)# success ?
a,c = sess.run([accuracy, cross_entropy], feed_dict=train_data)# success on test data ?test_data={X: mnist.test.images, Y_: mnist.test.labels}a,c = sess.run([accuracy, cross_entropy, It], feed=test_data)
44جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
محاسبات توزیع شده
45جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
cpuمی توان گراف محاسباتی را برای اجرای موازی روی •یم ها و دستگاه های مختلف به چند قسمت تقسGPUها، .کرد
with tf.device('/gpu:2'):a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], name='b')
c = tf.matmul(a, b)
پوراخوانعلیرضا
جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن داده
46
منابعرو مطالعات بیشت
درس های آنالین و رایگان آموزش تنسورفلو
47جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
https://www.udacity.com/course/deep-learning--ud730
Deep Learning by (using Tensorflow (
Deep Learning with TensorFlow
https://bigdatauniversity.com/courses/deep-learning-tensorflow/
CS 20SI: Tensorflow for Deep Learning Research
https://web.stanford.edu/class/cs20si/
https://www.youtube.com/watch?v=l6K-MFgIEjc
https://cs224d.stanford.edu/lectures/CS224d-Lecture7.pdf
19th Apr 2016
...اصلی این ارائه و مفید برای مطالعهمنابع
48جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
https://www.youtube.com/watch?v=vq2nnJ4g6N0
https://gotocon.com/...TensorflowAndDeepLearningWithoutAPhD.pdf
8 Nov 2016
http://web.stanford.edu/class/cs20si/lectures/slides_01.pdf
13 and 18 Jan 2017
http://web.stanford.edu/class/cs20si/lectures/slides_02.pdf
سایر منابع
TensorFlow official sitehttp://tensorflow.org/
Deep Learning Frameworks Compared by Siraj Ravalhttps://www.youtube.com/watch?v=MDP9FfsNx60
TensorFlow - Ep. 22 (Deep Learning SIMPLIFIED)https://www.youtube.com/watch?v=bYeBL92v99Y
49جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن دادهپوراخوانعلیرضا
(4)اده تحلیل با رویکرد یادگیری ژرف بر بستر کالن دکارگروه کالن داده؛ دانشگاه صنعتی شریف، تهران
با تشکر
50جلسه چهارم ارائه علمی تحلیل با رویکرد یادگیری ژرف بر بستر کالن داده
[email protected] علیرضا اخوان پور1395بهمن 6
پوراخوانعلیرضا