আমি কেরাসের টেনসরবোর্ড কলব্যাক কীভাবে ব্যবহার করব?


143

আমি কেরাসকে নিয়ে একটি নিউরাল নেটওয়ার্ক তৈরি করেছি। আমি এর তথ্য টেনসরবোর্ড দ্বারা কল্পনা করব, তাই আমি এটি ব্যবহার করেছি:

keras.callbacks.TensorBoard(log_dir='/Graph', histogram_freq=0,
                            write_graph=True, write_images=True)

যেমন কেরাস.ওয়েতে ব্যাখ্যা করা হয়েছে । আমি যখন কলব্যাকটি চালাই আমি পাই <keras.callbacks.TensorBoard at 0x7f9abb3898>তবে আমার ফোল্ডার "গ্রাফ" এ কোনও ফাইল পাই না। আমি কীভাবে এই কলব্যাকটি ব্যবহার করেছি তাতে কিছু ভুল আছে?


3
আমি সেট histogram_freqকরার পরামর্শ দেব 1। "হিস্টোগ্রাম_ফ্রেক: মডেল এর স্তরগুলির জন্য অ্যাক্টিভেশন হিস্টোগ্রামগুলি গণনা করার জন্য ফ্রিকোয়েন্সি (epochs এ) 0 0 তে সেট করা থাকলে, হিস্টোগ্রামগুলি গণনা করা হবে না।"
ম্যাট ক্লেইনস্মিথ

10
সতর্কতা অবলম্বন করুন: "/ গ্রাফ" রুট ডিরেক্টরিতে একটি ডিরেক্টরি তৈরি করে, যখন "./ গ্রাফ" কার্যকারী ডিরেক্টরিতে একটি তৈরি করে।
ম্যাট ক্লিনস্মিথ

@ ম্যাটক্লেইনস্মিথ যদি 0 তে সেট করা থাকে তবে কেবলমাত্র অ্যাক্টিভেশন এবং ওজন হিস্টোগ্রামগুলিকে বৈধকরণ ডেটার মাধ্যমে গণনা করা হবে না, মেট্রিকগুলি এখনও লগইন করা হবে।
বাগকিলার

আমার মনে হয় এটা এ logdir চেহারায় অনন্য নাম দিন ভালো stackoverflow.com/a/54949146/1179925
mrgloom

উত্তর:


219
keras.callbacks.TensorBoard(log_dir='./Graph', histogram_freq=0,  
          write_graph=True, write_images=True)

এই লাইনটি একটি কলব্যাক টেনসরবোর্ড অবজেক্ট তৈরি করে, আপনার সেই বস্তুটি ক্যাপচার করা উচিত এবং এটি fitআপনার মডেলের ফাংশনে দেওয়া উচিত ।

tbCallBack = keras.callbacks.TensorBoard(log_dir='./Graph', histogram_freq=0, write_graph=True, write_images=True)
...
model.fit(...inputs and parameters..., callbacks=[tbCallBack])

এইভাবে আপনি আপনার কলব্যাক বস্তুকে ফাংশনটি দিয়েছিলেন। এটি প্রশিক্ষণের সময় চালানো হবে এবং টেনসরবোর্ডের সাহায্যে ব্যবহৃত হওয়া ফাইলগুলি আউটপুট দেবে।

আপনি যদি প্রশিক্ষণের সময় তৈরি ফাইলগুলি ভিজ্যুয়ালাইজ করতে চান তবে আপনার টার্মিনালটিতে চালান

tensorboard --logdir path_to_current_dir/Graph 

আশাকরি এটা সাহায্য করবে !


আমি এটিকে নিম্নলিখিত ত্রুটির সাথে ব্যবহার করেছি যখন লেখার_মিজাগুলি = মিথ্যা
আবদুল কাইয়ুম

অবৈধ অরগমেন্টমেন্ট (তদন্তের জন্য উপরের অংশে দেখুন): টেনসর অবশ্যই শেষ ম্লান 1, 3 বা 4 এর সাথে 4-ডি হতে হবে, [1,3,3,256,256,1] নয় [[নোড: কনফাইজ ২.২/২ / কার্নেল_০_ = চিত্রসুমারী [টি = ডিT_ফ্লোট, Bad_color = টেনসর <প্রকার: uint8 আকৃতি: [4] মান: 255 0 0 ...>, সর্বাধিক_মেজ = 3, _ ডিভাইস = "/ কাজ: লোকালহোস্ট / প্রতিলিপি: 0 / টাস্ক: 0 / সিপিইউ: 0"] (কনফিউস 14) conv 2_2 / কার্নেল_0_1 / ট্যাগ, এক্সপ্যান্টডিমস_50)]]
আবদুল কাইয়ুম

এবং স্থানধারক কিছু বলছেন যে dtype = ভাসা অনুপস্থিত যখন সত্য কোন আইডিয়া?
আবদুল কাইয়ুম

2
স্কেলার ট্যাবটি এখনও খালি আছে, যদিও আমি গ্রাফগুলি ট্যাবে আমার মডেল আর্কিটেকচারটি দেখতে পাচ্ছি?
ইরত্জ্জশ

1
এটি কেবল প্রশিক্ষণের ক্ষতি এবং নির্ভুলতার জন্য স্কেলার তৈরি করে। আপনি কীভাবে বৈধতা_ডাটা যা ফিট হয়ে যাবেন তার জন্য একই করবেন?
উত্কু উফুক

46

আপনি টেনসরবোর্ড কলব্যাকটি এভাবে ব্যবহার করেন :

from keras.callbacks import TensorBoard

tensorboard = TensorBoard(log_dir='./logs', histogram_freq=0,
                          write_graph=True, write_images=False)
# define model
model.fit(X_train, Y_train,
          batch_size=batch_size,
          epochs=nb_epoch,
          validation_data=(X_test, Y_test),
          shuffle=True,
          callbacks=[tensorboard])

2
টেনসরবোর্ডের আউটপুট আরও ভাল গঠনের কোনও উপায় আছে কি? কেরাস কি এই বিষয়ে কিছু অপ্টিমাইজেশন করে?
নিকপিক

2
@ নিকপিক আপনার অর্থ কী তা আমি জানি না। তবে আমি মনে করি এটি অন্য প্রশ্নের প্রার্থী হতে পারে।
মার্টিন থোমা

এখানে আমরা এখানে যান: stackoverflow.com/questions/45309153/...
Nickpick

লক্ষণীয় গুরুত্বপূর্ণ যে histogram_freq=0সেট করা হয়েছে যদি টেনসরবোর্ড কোনও হিস্টোগ্রাম লগ না করে tf.summary.histogram- অন্যথায় histogram_freq0 এর সমান হয় না!
চটপটি বিন বিন

20

পরিবর্তন

keras.callbacks.TensorBoard(log_dir='/Graph', histogram_freq=0,  
          write_graph=True, write_images=True)

প্রতি

tbCallBack = keras.callbacks.TensorBoard(log_dir='Graph', histogram_freq=0,  
          write_graph=True, write_images=True)

এবং আপনার মডেল সেট করুন

tbCallback.set_model(model)

আপনার টার্মিনাল চালান

tensorboard  --logdir Graph/

আমি পেয়েছি AttributeError: 'TensorBoard' object has no attribute 'set_model'
ফ্যাবিও পেরেজ

15

আপনি যদি কেরাস লাইব্রেরির সাথে কাজ করছেন এবং আপনার যথার্থতা এবং অন্যান্য ভেরিয়েবলের গ্রাফগুলি মুদ্রণ করতে টেনসরবোর্ড ব্যবহার করতে চান তবে নীচের পদক্ষেপগুলি অনুসরণ করা হবে।

পদক্ষেপ 1: নীচের কমান্ডটি ব্যবহার করে টেনসরবোর্ড আমদানি করতে কেরাস কলব্যাক পাঠাগারটি শুরু করুন

from keras.callbacks import TensorBoard

পদক্ষেপ 2: "মডেল.ফিট ()" কমান্ডের ঠিক আগে আপনার প্রোগ্রামে নীচের কমান্ডটি অন্তর্ভুক্ত করুন।

tensor_board = TensorBoard(log_dir='./Graph', histogram_freq=0, write_graph=True, write_images=True)

দ্রষ্টব্য: "./ অনুগ্রহ" ব্যবহার করুন। এটি আপনার বর্তমান কার্যকারী ডিরেক্টরিতে গ্রাফ ফোল্ডার তৈরি করবে, "/ গ্রাফ" ব্যবহার করা এড়ানো হবে।

পদক্ষেপ 3: "মডেল.ফিট ()" তে টেনসরবোর্ড কলব্যাক অন্তর্ভুক্ত করুন The নমুনাটি নীচে দেওয়া হয়েছে।

model.fit(X_train,y_train, batch_size=batch_size, epochs=nb_epoch, verbose=1, validation_split=0.2,callbacks=[tensor_board])

পদক্ষেপ 4: আপনার কোডটি চালান এবং আপনার কার্যকরী ডিরেক্টরিতে আপনার গ্রাফ ফোল্ডারটি রয়েছে কিনা তা যাচাই করুন। যদি উপরের কোডগুলি সঠিকভাবে কাজ করে তবে আপনার কার্যকারী ডিরেক্টরিতে আপনার "গ্রাফ" ফোল্ডার থাকবে।

পদক্ষেপ 5: আপনার কার্যকরী ডিরেক্টরিতে টার্মিনালটি খুলুন এবং নীচের কমান্ডটি টাইপ করুন।

tensorboard --logdir ./Graph

পদক্ষেপ:: এখন আপনার ওয়েব ব্রাউজারটি খুলুন এবং নীচের ঠিকানাটি প্রবেশ করুন।

http://localhost:6006

প্রবেশের পরে, টেনসরবার্ড পৃষ্ঠাটি খুলবে যেখানে আপনি বিভিন্ন ভেরিয়েবলের গ্রাফ দেখতে পাবেন।


লক্ষণীয় গুরুত্বপূর্ণ যে histogram_freq=0সেট করা হয়েছে যদি টেনসরবোর্ড কোনও হিস্টোগ্রাম লগ না করে tf.summary.histogram- অন্যথায় histogram_freq0 এর সমান হয় না!
চটপটি বিন বিন

9

এখানে কিছু কোড রয়েছে:

K.set_learning_phase(1)
K.set_image_data_format('channels_last')

tb_callback = keras.callbacks.TensorBoard(
    log_dir=log_path,
    histogram_freq=2,
    write_graph=True
)
tb_callback.set_model(model)
callbacks = []
callbacks.append(tb_callback)

# Train net:
history = model.fit(
    [x_train],
    [y_train, y_train_c],
    batch_size=int(hype_space['batch_size']),
    epochs=EPOCHS,
    shuffle=True,
    verbose=1,
    callbacks=callbacks,
    validation_data=([x_test], [y_test, y_test_coarse])
).history

# Test net:
K.set_learning_phase(0)
score = model.evaluate([x_test], [y_test, y_test_coarse], verbose=0)

মূলত, histogram_freq=2 এই কলব্যাক কল করার সময় টিউন করার জন্য সর্বাধিক গুরুত্বপূর্ণ পরামিতি: এটি ডিস্কগুলিতে কম ফাইল উত্পন্ন করার লক্ষ্য নিয়ে কলব্যাক কল করার জন্য পর্বগুলির একটি বিরতি সেট করে।

সুতরাং এখানে "হিস্টোগ্রামস" ট্যাবের অধীনে একবার টেনসরবোর্ডে দেখা গিয়েছিল ট্রেনিং জুড়ে সর্বশেষ সমঝোতার জন্য মূল্যগুলির বিবর্তনের উদাহরণ ভিজ্যুয়ালাইজেশন (এবং আমি "বিতরণ" ট্যাবটি দেখতে পেয়েছি খুব অনুরূপ চার্ট ধারণ করে, তবে পাশের দিকে উল্টিয়েছি):

টেনসরবোর্ড ওজন পর্যবেক্ষণ

আপনি যদি প্রসঙ্গে একটি পূর্ণ উদাহরণ দেখতে চান তবে আপনি এই ওপেন-সোর্স প্রকল্পটি উল্লেখ করতে পারেন: https://github.com/Vooban/Hyperopt-Keras-CNN-CIFAR-100


আমি এটিকে নিম্নোক্ত করেছিলাম কারণ এর একটি বড় অংশটি আসলে প্রশ্ন এবং উত্তরটির উত্তর নয়। উত্তরে নতুন প্রশ্ন জিজ্ঞাসা করবেন না, এটি কোনও অংশ বা উত্তরের পুরো উদ্দেশ্য।
জো

আপনি যা উল্লেখ করেছেন তা সরিয়ে দিতে আমি প্রশ্নটি সম্পাদনা করেছি। আসলে, আমি উত্তর দেওয়ার সময় ডকুমেন্টেশন থেকে এই কলব্যাকটি সঠিকভাবে ব্যবহার করা খুব শক্ত।
গিলাইম শেভালিয়ের

"আমি কেরাসের টেনসরবোর্ড কলব্যাক কীভাবে ব্যবহার করব?" উত্তর দেওয়ার জন্য, অন্যান্য সমস্ত উত্তর অসম্পূর্ণ এবং কেবল প্রশ্নের ছোট্ট প্রসঙ্গে সাড়া দেয় - উদাহরণস্বরূপ এম্বেডিংগুলিকে কেউ ট্যাক্স করে না। কমপক্ষে, আমার উত্তরে এড়াতে আমি সম্ভাব্য ত্রুটিগুলি বা জিনিসগুলি নথিভুক্ত করেছি। আমি মনে করি যে আমি এমন গুরুত্বপূর্ণ প্রশ্ন উত্থাপন করেছি যার সম্পর্কে এখনও কেউ ভাবেনি। আমি এখনও একটি সম্পূর্ণ উত্তরের জন্য অপেক্ষা করছি। এই কলব্যাকটিও ক্যান্সারের মতো অসুস্থ-ডকুমেন্টেড।
গুইলিউম শেভালিয়ার

4

আপনি যদি গুগল-কোলাব ব্যবহার করেন তবে গ্রাফের সহজ ভিজ্যুয়ালাইজেশনটি হ'ল :

import tensorboardcolab as tb

tbc = tb.TensorBoardColab()
tensorboard = tb.TensorBoardColabCallback(tbc)


history = model.fit(x_train,# Features
                    y_train, # Target vector
                    batch_size=batch_size, # Number of observations per batch
                    epochs=epochs, # Number of epochs
                    callbacks=[early_stopping, tensorboard], # Early stopping
                    verbose=1, # Print description after each epoch
                    validation_split=0.2, #used for validation set every each epoch
                    validation_data=(x_test, y_test)) # Test data-set to evaluate the model in the end of training

2

আপনি লিখেছেন log_dir='/Graph'বোঝাতে চাইছেন ./Graphপরিবর্তে? আপনি /home/user/Graphএই মুহুর্তে এটি প্রেরণ করেছেন ।


1
কেন সরাসরি /Graphব্যবহারের পরিবর্তে ব্যবহারকারীর হোম ডিরেক্টরিতে একটি ফোল্ডার তৈরি করা হবে /Graph?
মাইকেল মায়ার

2

আপনার লসওয়াইওয়াস ( https://losswise.com ) পরীক্ষা করা উচিত , এটি কেরাসের জন্য একটি প্লাগইন রয়েছে যা টেনসরবোর্ডের চেয়ে সহজেই ব্যবহার করা যায় এবং কিছু সুন্দর অতিরিক্ত বৈশিষ্ট্য রয়েছে। লসওয়াইজের সাহায্যে আপনি কেবল ব্যবহার করতে পারেন from losswise.libs import LosswiseKerasCallbackএবং তারপরে callback = LosswiseKerasCallback(tag='my fancy convnet 1')আপনি ভাল হয়ে যাবেন ( https://docs.losswise.com/#keras-plugin দেখুন )।


7
অস্বীকৃতি: ওপি লসওয়াইসের প্রতিষ্ঠাতা, যা একটি প্রদত্ত পণ্য (যদিও বেশ উদার ফ্রি টায়ারের সাথে)
মাইকেল মায়ার


2

কিছু জিনিস আছে।

প্রথমত, না /Graphকিন্তু./Graph

দ্বিতীয়ত, আপনি যখন টেনসরবোর্ড কলব্যাক ব্যবহার করেন, সর্বদা বৈধতা ডেটা পাস করুন, কারণ এটি না থাকলে এটি শুরু হয় না।

তৃতীয়ত, আপনি যদি স্কেলারের সংক্ষিপ্তসারগুলি বাদ দিয়ে অন্য কিছু ব্যবহার করতে চান তবে আপনার কেবল fitপদ্ধতিটি ব্যবহার করা উচিত কারণ fit_generatorকাজ করবে না। অথবা আপনি কাজ করতে কলব্যাকটি পুনরায় লিখতে পারেন fit_generator

কলব্যাক যুক্ত করতে, কেবল এটিতে যুক্ত করুন model.fit(..., callbacks=your_list_of_callbacks)


3 য় পয়েন্ট সম্পর্কিত লিঙ্ক: github.com/keras-team/keras/issues/3358#issuecomment-312531958
লিও ব্রুজেম্যান

2

টেনসরবোর্ড কলব্যাক তৈরি করুন:

from keras.callbacks import TensorBoard
from datetime import datetime
logDir = "./Graph/" + datetime.now().strftime("%Y%m%d-%H%M%S") + "/"
tb = TensorBoard(log_dir=logDir, histogram_freq=2, write_graph=True, write_images=True, write_grads=True)

ফিট কলটিতে টেনসরবোর্ড কলব্যাকটি পাস করুন:

history = model.fit(X_train, y_train, epochs=200, callbacks=[tb])

মডেলটি চালানোর সময়, যদি আপনি কোনও কেরাস ত্রুটি পান

"আপনাকে অবশ্যই স্থানধারক টেনসারের জন্য একটি মান খাওয়াতে হবে"

মডেল তৈরির আগে কেরাস সেশনটি পুনরায় চেষ্টা করে দেখুন:

import keras.backend as K
K.clear_session()

এটি সমস্যাটি স্থির করেছে You must feed a value for placeholder tensor,। কোন ধারণা কেন?
uthত্বিক ভাইলা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.