এই পৃষ্ঠার একটি TensorFlow প্রোগ্রাম থেকে রপ্তানি (সঞ্চয় নয়) একটি মডেল বিবরণ বর্ণনা TensorFlow 2 SavedModel বিন্যাস । TensorFlow Hub-এ প্রাক-প্রশিক্ষিত মডেল এবং মডেলের অংশগুলি ভাগ করার জন্য এই বিন্যাসটি প্রস্তাবিত উপায়। এটা তোলে পুরোনো প্রতিস্থাপন TF1 হাব বিন্যাস ও API গুলি একটি নতুন সেট দিয়ে আসে। আপনি TF1 হাব বিন্যাস মডেল রপ্তানি উপর আরও তথ্য পেতে পারেন TF1 হাব বিন্যাস রপ্তানি । কীভাবে TensorFlow হাব তে এটি ভাগ করে নেওয়ার জন্য SavedModel সংকুচিত করার বিস্তারিত জানতে পারেন এখানে ।
কিছু মডেল বিল্ডিং টুলকিট ইতিমধ্যে এই কাজ করতে সরঞ্জাম প্রদান (যেমন, জন্য নীচে দেখুন TensorFlow মডেল গার্ডেন )।
ওভারভিউ
SavedModel হল TensorFlow-এর প্রশিক্ষিত মডেল বা মডেলের অংশগুলির জন্য স্ট্যান্ডার্ড সিরিয়ালাইজেশন বিন্যাস। এটি সঠিক টেনসরফ্লো ক্রিয়াকলাপগুলির সাথে মডেলের প্রশিক্ষিত ওজনগুলিকে তার গণনা সম্পাদন করতে সঞ্চয় করে৷ এটি তৈরি করা কোড থেকে এটি স্বাধীনভাবে ব্যবহার করা যেতে পারে। বিশেষ করে, কেরাসের মতো বিভিন্ন উচ্চ-স্তরের মডেল-বিল্ডিং API গুলিতে এটি পুনরায় ব্যবহার করা যেতে পারে, কারণ টেনসরফ্লো অপারেশনগুলি তাদের সাধারণ মৌলিক ভাষা।
কেরাস থেকে সংরক্ষণ
TensorFlow 2, থেকে শুরু করে tf.keras.Model.save()
এবং tf.keras.models.save_model()
SavedModel ফরম্যাট (না HDF5) ডিফল্ট। ফলে SavedModels যে সঙ্গে ব্যবহার করা যেতে পারে hub.load()
, hub.KerasLayer
এবং অন্যান্য উচ্চ পর্যায়ের API গুলির জন্য অনুরূপ অ্যাডাপ্টার উপলব্ধ হওয়ার সাথে সাথেই।
শুধু সঞ্চয় সঙ্গে একটি সম্পূর্ণ Keras মডেল ভাগ করার জন্য, include_optimizer=False
।
কেরাস মডেলের একটি অংশ ভাগ করতে, টুকরোটিকে নিজেই একটি মডেল তৈরি করুন এবং তারপরে এটি সংরক্ষণ করুন৷ আপনি হয় শুরু থেকে এই মত কোড লেআউট করতে পারেন....
piece_to_share = tf.keras.Model(...)
full_model = tf.keras.Sequential([piece_to_share, ...])
full_model.fit(...)
piece_to_share.save(...)
...অথবা ঘটনাটি ভাগ করার জন্য অংশটি কেটে ফেলুন (যদি এটি আপনার সম্পূর্ণ মডেলের স্তরের সাথে সারিবদ্ধ হয়):
full_model = tf.keras.Model(...)
sharing_input = full_model.get_layer(...).get_output_at(0)
sharing_output = full_model.get_layer(...).get_output_at(0)
piece_to_share = tf.keras.Model(sharing_input, sharing_output)
piece_to_share.save(..., include_optimizer=False)
TensorFlow মডেল GitHub থেকে বার্ট জন্য সাবেক পদ্ধতির (দেখুন ব্যবহার NLP / সরঞ্জামগুলি চালু / export_tfhub_lib.py মধ্যে বিভক্ত করে মনে রাখবেন core_model
রপ্তানির জন্য এবং pretrainer
চেকপয়েন্ট পুনরূদ্ধার জন্য) এবং ResNet জন্য আধুনিক পদ্ধতির (দেখুন উত্তরাধিকার / image_classification / tfhub_export। PY )।
নিম্ন-স্তরের টেনসরফ্লো থেকে সংরক্ষণ করা হচ্ছে
এই TensorFlow এর সঙ্গে ভাল পরিচিত প্রয়োজন SavedModel গাইড ।
আপনি শুধুমাত্র একটি ভজনা স্বাক্ষর চেয়ে বেশি প্রদান করতে চান, তাহলে আপনি বাস্তবায়ন করা উচিত পুনর্ব্যবহারযোগ্য SavedModel ইন্টারফেস । ধারণাগতভাবে, এই মত দেখায়
class MyMulModel(tf.train.Checkpoint):
def __init__(self, v_init):
super().__init__()
self.v = tf.Variable(v_init)
self.variables = [self.v]
self.trainable_variables = [self.v]
self.regularization_losses = [
tf.function(input_signature=[])(lambda: 0.001 * self.v**2),
]
@tf.function(input_signature=[tf.TensorSpec(shape=None, dtype=tf.float32)])
def __call__(self, inputs):
return tf.multiply(inputs, self.v)
tf.saved_model.save(MyMulModel(2.0), "/tmp/my_mul")
layer = hub.KerasLayer("/tmp/my_mul")
print(layer([10., 20.])) # [20., 40.]
layer.trainable = True
print(layer.trainable_weights) # [2.]
print(layer.losses) # 0.004
SavedModel নির্মাতাদের জন্য পরামর্শ
TensorFlow Hub-এ শেয়ার করার জন্য একটি SavedModel তৈরি করার সময়, এর ভোক্তাদের এটিকে কীভাবে সূক্ষ্ম-টিউন করা উচিত এবং ডকুমেন্টেশনে নির্দেশিকা প্রদান করা উচিত কিনা তা ভেবে দেখুন।
একটি Keras মডেল থেকে সংরক্ষণ করা হচ্ছে ফাইন টিউনিং কাজ সব বলবিজ্ঞান করা উচিত (ওজন নিয়মিতকরণ লোকসান সংরক্ষণ trainable ভেরিয়েবল ঘোষণা, ট্রেসিং __call__
উভয়ের জন্য training=True
এবং training=False
, ইত্যাদি)
একটি মডেল ইন্টারফেস চয়ন করুন যা গ্রেডিয়েন্ট প্রবাহের সাথে ভাল খেলে, যেমন, সফ্টম্যাক্স সম্ভাব্যতা বা শীর্ষ-কে ভবিষ্যদ্বাণীগুলির পরিবর্তে আউটপুট লগিট।
যদি মডেল ড্রপআউট, ব্যাচ স্বাভাবিকীকরণ, বা অনুরূপ প্রশিক্ষণ কৌশলগুলি ব্যবহার করে যা হাইপারপ্যারামিটারগুলি জড়িত, সেগুলিকে এমন মানগুলিতে সেট করুন যা অনেকগুলি প্রত্যাশিত লক্ষ্য সমস্যা এবং ব্যাচের আকার জুড়ে বোঝা যায়৷ (এই লেখার মতো, কেরাস থেকে সঞ্চয় করা ভোক্তাদের তাদের সামঞ্জস্য করা সহজ করে না।)
পৃথক স্তর উপর ওজন regularizers সংরক্ষিত হয় (তাদের নিয়মিতকরণ শক্তি কোফিসিয়েন্টস সঙ্গে), কিন্তু ওজন নিয়মিতকরণ অপটিমাইজার মধ্যে থেকে (যেমন tf.keras.optimizers.Ftrl.l1_regularization_strength=...)
) হারিয়ে গেছে। সেই অনুযায়ী আপনার সংরক্ষিত মডেলের ভোক্তাদের পরামর্শ দিন।
টেনসরফ্লো মডেল গার্ডেন
TensorFlow মডেল গার্ডেন রেপো পুনর্ব্যবহারযোগ্য TF2 সংরক্ষিত মডেল তৈরি উদাহরণ অনেকটা আপলোড করা রয়েছে tfhub.dev ।
সম্প্রদায়ের অনুরোধ
TensorFlow হাব দলের সম্পদের পাওয়া যায় একটি ছোট ভগ্নাংশ উত্পন্ন tfhub.dev। আমরা প্রাথমিকভাবে Google এবং ডিপমাইন্ড, কর্পোরেট এবং একাডেমিক গবেষণা প্রতিষ্ঠানের গবেষক এবং মডেল তৈরির জন্য ML উত্সাহীদের উপর নির্ভর করি। ফলস্বরূপ, আমরা গ্যারান্টি দিতে পারি না যে আমরা নির্দিষ্ট সম্পত্তির জন্য সম্প্রদায়ের অনুরোধগুলি পূরণ করতে পারি এবং আমরা নতুন সম্পদের প্রাপ্যতার জন্য সময় অনুমান সরবরাহ করতে পারি না।
কমিউনিটি মডেল অনুরোধ মাইলস্টোন নিচে নির্দিষ্ট সম্পদের জন্য সম্প্রদায় থেকে অনুরোধ রয়েছে - আপনি বা আপনার পরিচিত কারো সম্পদ উৎপাদন এবং এর ভাগ আগ্রহীtfhub.dev, আমরা জমা স্বাগত জানাই!