تنسورفلو ۴ - Tensorboard

تنسوربٌرد چیست؟تنسوربرد رابطی هست برای نمایش گراف و سایر ابزار ها برای فهمیدن، دیباگ و بهبود مدلمثال:تصویر زیر گرافی هست که قرار است در این آموزش بدست بیاد.تنسور برددر پنجره زیر شما پنل تنسوربرد را مشاهده می کنید که شامل تب های مختلفی هست که به سطح اطلاعاتی که شما وارد می کنید مربوط می شود.نوار اصلی تنسوربردScalars: نمایش اطلاعات مختلف در طول تعلیم مدلGraphs: نمایش مدلHistogram: نمایش وزن ها به وسیله هیستوگرامDistribution: نمایش نحوه توزیع وزن هاProjector: نمایش مولفه های اصلی تحلیل به عبارتی تکنیکی برای کاهش ابعاددر این قسمت یک مدل ساده یادگیری عمیق را تعلیم می دهیم. در مورد اینکه چجوری کار می کنه بعدا می خوانیم.اگه به گراف زیر نگاه کنید خواهید فهمید که چگونه کار می کند.وارد سازی دیتا به مدل: وارد سازی دیتا به اندازه دسته داخل مدلوارد سازی اطلاعات به تنسور هاتعلیم مدلنمایش تعداد دسته ها در طول تعلیم و ذخیره سازی مدلچرخه کارایده ساده استفاده شده در تنسوربرد این است که شبکه های عصبی می تونند به عنوان یک جعبه سیاه استفاده بشند و ما با استفاده از یک ابزار می تونیم بررسی کنیم داخل جعبه چه اتفاقی داره رخ می ده. پس تنسوربرد مث یک چراغ قوه هست ک می تونید با اون بپرید وسط شبکه های عصبی :-)تنسوربرد کمک می کنه که ارتباط میان عملیات های مختلف را بفهمید، مشاهده کنید که چگونه وزن ها محاسبه می شه، تابع کاهش (هزینه) را مشاهده کنید و اطلاعات مفید دیگری.وقتی که تک تک این ابزار ها رو در کنار هم دیگه قرار بدیم یک وسیله خیلی عالی برای دیباگ و بهبود مدل برای استفاده بدست می آریم.برای اینکه مشاهده کنید چقدر یک نمودار می تواند مفید باشد به تصویر زیر نگاه کنید.راست: در حال یادگیری - چپ: احتمالا بازیگوشی :-)یک شبکه عصبی تصمیم می گیرد که چگونه نورون های مختلف به یکدیگر مرتبط شوند و چه تعداد لایه نیاز هستند. وقتی که شما معماری مدل را تعریف کردید علاوه بر اینکه نیاز دارید مدل را تعلیم دهید نیاز دارید که میزان دقت پیشبینی خود را محاسبه کنید.این معیار اندازه گیری به عنوان loss function یا تابع هزینه شناخته میشه.هدف کمینه کردن تابع هزینه هست. به بیان دیگر این هست که مدل خطا های کمتری داشته باشه.تمام الگوریتم های یادگیری ماشین محاسبات خودشون رو ادامه میدند تا وقتی که به یک شیب تقریبا صفر برسند. برای کاهش این تابع هدف شما باید یک نرخ یادگیری تعیین کنید که سرعتی هست که مدل شما یاد می گیره. مثلا اگه نرخ یادگیری رو خیلی بالا ببرید مدل زمان کافی برای یادگیری نداره مثلا تصویر سمت چپ نمودار مدام پایین و بالا میره که به این معنی هست که مدل فقط داره خروجی رو حدس می زنه. در صورتی که تصویر سمت راست نشون میده تابع هزینه در هر مرحله داره کاهش پیدا می کنه تا وقتی که منحنی به شیب تقریبا صفر می رسه که به معنی این هست که مدل راه حل رو پیدا کرده.تنسوربرد ابزار مناسبی برای مشاهده این معیار ها و برجسته کردن خطاهای احتمالی هست. تنسوربرد در طول تعلیم مدل معیار ها رو به شما نشون میده و باعث میشه که لازم نباشه شما تا آخر تعلیم صبر کنید که نتیجه رو ببینید.چگونه از TensorBoard استفاده کنیم؟برای شروع اولین کار با وارد کردن خط های زیر داخل ترمینال نوت بوک رو باز می کنیم و طبق آموزش قبلی یک نوت بوک جدید می سازیم. قراره یک مدل رو تعلیم بدیم و جزئیات رو مشاهده کنیم البته بعدا توضیحات تکمیلی خواهم داد که داریم چکار می کنیم پس الان فقط روی تنسوربرد تمرکز می کنیم.source activate hello-tfjupyter notebookقدم اول کتابخانه هایی که قراره ازشون استفاده کنیم رو وارد می کنیم.#Import the library import tensorflow as tf import numpy as npسپس دیتا رو می سازیم. یک آرایه با ۱۰۰۰۰ سطر و ۵ ستونX_train = (np.random.sample((10000,5))) y_train = (np.random.sample((10000,1))) X_train.shapeخروجی(10000, 5)کد زیر قراره که دیتا ها رو تبدیل کنه و مدل رو بسازه که خب یک سری نکته بهتره دربارش بگم۱. نرخ یادگیری برابر هست با ۰.۱ و اگه شما افزایشش بدید ممکنه مدل نتونه یادبگیره و مثل نمودار سمت چپ بشه.۲. در این کد از TensorFlow estimator استفاده شده که یک API هست که شامل تمام محاسبات ریاضی هست.۳. برای ساخت فایل لاگ شما باید مسیرش تعیین کنید که با model_dir مشخص شده.feature_columns = [tf.feature_column.numeric_column('x', shape=X_train.shape[1:])] DNN_reg = tf.estimator.DNNRegressor(feature_columns=feature_columns, # Indicate where to store the log file model_dir='train/linreg', hidden_units=[500, 300], optimizer=tf.train.ProximalAdagradOptimizer(learning_rate=0.1, l1_regularization_strength=0.001) )خروجیINFO:tensorflow:Using default config. INFO:tensorflow:Using config: {'_model_dir': 'train/linreg', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': allow_soft_placement: true graph_options { rewrite_options { meta_optimizer_iterations: ONE } } , '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_device_fn': None, '_protocol': None, '_eval_distribute': None, '_experimental_distribute': None, '_service': None, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7f9235469a58>, '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}مرحله آخر تعلیم مدل هست. در طول تعلیم تنسورفلو اطلاعات را داخل پوشه مدل ذخیره می کنه.# Train the estimator train_input = tf.estimator.inputs.numpy_input_fn( x={"x": X_train}, y=y_train, shuffle=False,num_epochs=None) DNN_reg.train(train_input,steps=3000)خروجیINFO:tensorflow:Calling model_fn. INFO:tensorflow:Done calling model_fn. INFO:tensorflow:Create CheckpointSaverHook. INFO:tensorflow:Graph was finalized. INFO:tensorflow:Running local_init_op. INFO:tensorflow:Done running local_init_op. INFO:tensorflow:Saving checkpoints for 0 into train/linreg/model.ckpt. INFO:tensorflow:loss = 45.232094, step = 1 INFO:tensorflow:global_step/sec: 422.633 INFO:tensorflow:loss = 12.4298, step = 101 (0.239 sec) INFO:tensorflow:global_step/sec: 331.11 INFO:tensorflow:loss = 11.425189, step = 201 (0.301 sec) INFO:tensorflow:global_step/sec: 327.099 INFO:tensorflow:loss = 9.984478, step = 301 (0.306 sec) INFO:tensorflow:global_step/sec: 324.576 INFO:tensorflow:loss = 9.4181595, step = 401 (0.308 sec) INFO:tensorflow:global_step/sec: 335.825 INFO:tensorflow:loss = 10.240588, step = 501 (0.298 sec) INFO:tensorflow:global_step/sec: 324.559 INFO:tensorflow:loss = 12.473342, step = 601 (0.308 sec) INFO:tensorflow:global_step/sec: 396.416 INFO:tensorflow:loss = 10.517891, step = 701 (0.252 sec) INFO:tensorflow:global_step/sec: 450.277 INFO:tensorflow:loss = 10.317724, step = 801 (0.222 sec) INFO:tensorflow:global_step/sec: 462.943 INFO:tensorflow:loss = 10.446275, step = 901 (0.216 sec) INFO:tensorflow:global_step/sec: 449.976 INFO:tensorflow:loss = 10.199943, step = 1001 (0.222 sec) INFO:tensorflow:global_step/sec: 445.179 INFO:tensorflow:loss = 11.021394, step = 1101 (0.225 sec) INFO:tensorflow:global_step/sec: 405.111 INFO:tensorflow:loss = 10.878467, step = 1201 (0.247 sec) INFO:tensorflow:global_step/sec: 430.173 INFO:tensorflow:loss = 9.767784, step = 1301 (0.232 sec) INFO:tensorflow:global_step/sec: 465.094 INFO:tensorflow:loss = 11.288946, step = 1401 (0.215 sec) INFO:tensorflow:global_step/sec: 466.42 INFO:tensorflow:loss = 11.19619, step = 1501 (0.214 sec) INFO:tensorflow:global_step/sec: 477.214 INFO:tensorflow:loss = 10.408053, step = 1601 (0.210 sec) INFO:tensorflow:global_step/sec: 444.272 INFO:tensorflow:loss = 9.973042, step = 1701 (0.225 sec) INFO:tensorflow:global_step/sec: 453.129 INFO:tensorflow:loss = 10.324511, step = 1801 (0.220 sec) INFO:tensorflow:global_step/sec: 451.574 INFO:tensorflow:loss = 10.431812, step = 1901 (0.221 sec) INFO:tensorflow:global_step/sec: 450.977 INFO:tensorflow:loss = 10.664722, step = 2001 (0.222 sec) INFO:tensorflow:global_step/sec: 441.491 INFO:tensorflow:loss = 10.488377, step = 2101 (0.226 sec) INFO:tensorflow:global_step/sec: 451.41 INFO:tensorflow:loss = 10.7743845, step = 2201 (0.222 sec) INFO:tensorflow:global_step/sec: 437.22 INFO:tensorflow:loss = 10.483818, step = 2301 (0.229 sec) INFO:tensorflow:global_step/sec: 447.573 INFO:tensorflow:loss = 12.194493, step = 2401 (0.223 sec) INFO:tensorflow:global_step/sec: 438.331 INFO:tensorflow:loss = 10.455133, step = 2501 (0.228 sec) INFO:tensorflow:global_step/sec: 453.799 INFO:tensorflow:loss = 11.965737, step = 2601 (0.220 sec) INFO:tensorflow:global_step/sec: 424.856 INFO:tensorflow:loss = 11.204067, step = 2701 (0.235 sec) INFO:tensorflow:global_step/sec: 448.324 INFO:tensorflow:loss = 9.647366, step = 2801 (0.223 sec) INFO:tensorflow:global_step/sec: 447.683 INFO:tensorflow:loss = 9.325161, step = 2901 (0.223 sec) INFO:tensorflow:Saving checkpoints for 3000 into train/linreg/model.ckpt. INFO:tensorflow:Loss for final step: 10.99929.<tensorflow_estimator.python.estimator.canned.dnn.DNNRegressor at 0x7f92354694a8>برای مشاهده تنسوربرد داخل پوشه ای که نوت بوک قرار دارد دستور زیر را داخل ترمینال وارد کنید.tensorboard --logdir=./train/linregتنسور بورد در آدرس زیر باز می شود:http://localhost:6006خروجی تنسوربرددقت کنید نحوه خواندن گراف رو در آینده دربارش صحبت می کنم.اگه به مشکلی خوردید بهتره کرنل نوت بوک و تنسوربرد رو ریست کنید.خلاصه:در این قسمت با تنسوربرد آشنا شدیم که ابزار ماسبی برای نمایش مدل به شمار میره. به وسیله تنسربرد می تونید معیار هایی از قبیل تابع هزینه، دقت و... رو مشاهده کنید.راه اندازی Tensorboard :tensorboard --logdir=.+ PATH