সতর্কতা: টেনসরফ্লো: স্যাম্পল_ ওয়েট মোডগুলি… থেকে ['...'] তে জোর করা হয়েছিল


47

যুক্তি হিসাবে কোনও অভিধান ব্যবহার করে .fit_generator()বা .fit()পাস করে একটি চিত্র শ্রেণিবদ্ধ প্রশিক্ষণ class_weight=

আমি টিএফ 1.এক্সে কখনও ত্রুটি পাই নি তবে প্রশিক্ষণ শুরু করার সাথে সাথে আমি ২.১-তে নিম্নলিখিত ফলাফলগুলি পেয়েছি:

WARNING:tensorflow:sample_weight modes were coerced from
  ...
    to  
  ['...']

কি তা থেকে নিগৃহীত কিছু করার অর্থ কী ...করতে ['...']?

tensorflowএর রেপোতে এই সতর্কতার জন্য উত্সটি এখানে , মন্তব্যগুলি দেওয়া হয়েছে :

লক্ষ্য কাঠামোতে নমুনা_জন_মোড জোর করে দেওয়ার চেষ্টা করুন। এটি স্পষ্টভাবে নির্ভর করে যে মডেলটি তার অভ্যন্তরীণ প্রতিনিধিত্বের জন্য আউটপুটকে ফ্ল্যাট করে।


7
আমার নিজের সতর্কতার জন্য কেবল অনুসন্ধান ফলাফল হিসাবে এই জাতীয় সাম্প্রতিক প্রশ্নটি দেখতে মজাদার।
jmkjaer

1
@জোরইজনস্মিট আপনি কি ইস্যু / সতর্কতার প্রতিলিপি করতে কোড সরবরাহ করতে পারবেন?
thushv89

2
আসলে %tensorflow_version 2.xএই সতর্কবার্তাটি উপস্থিত করার জন্য টিএফ 2 এ
jorijnsmit

1
@জোরইজনস্মিত, না, আমি একই সতর্কতা পেয়েছি তবে বাস্তবে টিএফ 2.1 ইনস্টল করেছি pip install tensorflow(পাইয়ানভ / ভ্যুচুয়ালেনভ পরিবেশের মধ্যে)
লুরিক্স 66

1
হ্যাঁ @ lurix66, এই ত্রুটিটি উত্পন্ন করে এমন কোডটি চালু করা হয়েছে 2.1.0rc0
jorijnsmit

উত্তর:


11

এটি একটি বোগাস বার্তা মত মনে হচ্ছে। টেনসরফ্লো ২.১ এ আপগ্রেড করার পরে আমি একই সতর্কতা বার্তাটি পাই তবে আমি কোনও শ্রেণিকাল ওজন বা নমুনা ওজন ব্যবহার করি না। আমি এমন একটি জেনারেটর ব্যবহার করি যা এই ধরণের দ্বিগুণ করে:

return inputs, targets

সতর্কতাটি দূরে সরাতে এখন আমি এটিকে কেবল নিম্নলিখিতটিতে পরিবর্তন করেছি:

return inputs, targets, [None]

এটি প্রাসঙ্গিক কিনা তা আমি জানি না তবে আমার মডেলটিতে 3 ইনপুট ব্যবহার করা হয়, সুতরাং আমার inputsপরিবর্তনশীলটি আসলে 3 টি নিম্পি অ্যারের একটি তালিকা। targetsকেবলমাত্র একটি একক অলরেডি অ্যারে।

যে কোনও ক্ষেত্রে এটি কেবল একটি সতর্কতা। প্রশিক্ষণটি যেভাবেই ঠিকঠাকভাবে কাজ করে।

টেনসরফ্লো ২.২ এর জন্য সম্পাদনা করুন:

এই বাগটি টেনসরফ্লো ২.২ এ স্থির করা হয়েছে বলে মনে হয়, যা দুর্দান্ত। তবে উপরের ফিক্সটি টিএফ ২.২ এ ব্যর্থ হবে, কারণ এটি নমুনা ওজনের আকৃতি পাওয়ার চেষ্টা করবে, যা স্পষ্টতই ব্যর্থ হবে AttributeError: 'NoneType' object has no attribute 'shape'। সুতরাং 2.2 এ আপগ্রেড করার সময় উপরের ফিক্সটি পূর্বাবস্থায় ফিরিয়ে আনুন।


এটি আমার পক্ষেও কাজ করে।
রবার্ট লাগেজ

14

আমি বিশ্বাস করি এটি টেনসরফ্লো সহ একটি বাগ যা আপনি যখন model.compile()ডিফল্ট প্যারামিটার দিয়ে কল করবেন sample_weight_mode=Noneএবং তারপরে model.fit()নির্দিষ্ট sample_weightবা কল দিয়ে কল করবেনclass_weight

টেনসরফ্লো রেপো থেকে:

  • fit() শেষ পর্যন্ত কল _process_training_inputs()
  • _process_training_inputs() sample_weight_modes = [None]উপর ভিত্তি করে সেটmodel.sample_weight_mode = None এবং এর DataAdapterসাথে একটি তৈরি করেsample_weight_modes = [None]
  • DataAdapterকল broadcast_sample_weight_modes()সঙ্গে sample_weight_modes = [None]সময় আরম্ভের
  • broadcast_sample_weight_modes() প্রত্যাশা বলে মনে হয় sample_weight_modes = None তবে গ্রহণ করে[None]
  • এটা asserts যে [None]থেকে একটি আলাদা কাঠামো sample_weight/ class_weight, এটা পিছনে মুছে ফেলা হয় Noneকাঠামো ঝুলানো দ্বারা sample_weight/ class_weightএবং একটি সতর্কবার্তা আউটপুট

এদিকে সতর্ক করার ফলে এর fit()মতো কোনও প্রভাব নেইsample_weight_modesDataAdapter না None

নোট করুন যে টেনসরফ্লো ডকুমেন্টেশনে উল্লেখ করা হয়েছে যে sample_weightঅবশ্যই একটি নম্পি-অ্যারে হবে। আপনি যদি এর পরিবর্তে কল fit()করেন তবে আপনি sample_weight.tolist()কোনও সতর্কতা পাবেন না তবে প্রিপ্রোসেসিংয়ে ডাকা হলে sample_weightনিঃশব্দে ওভাররাইট করা হবে এবং একের চেয়ে বেশি দৈর্ঘ্যের ইনপুট পাবেন।None_process_numpy_inputs()


1
একটি খুব বিশদ ব্যাখ্যা, ধন্যবাদ। কেবলমাত্র আমি বুঝতে পারি না যে হুঁশিয়ারিটি ...জোর করে জোর দেওয়া হয়েছে [...], যেখানে আপনার ক্ষেত্রে [None]জোর করা হয়েছে None...
jorijnsmit

4

আমি আপনার গিস্টটি নিয়েছি এবং টিএনএর পরিবর্তে টেনসরফ্লো ২.০ ইনস্টল করেছি এবং এটি কোনও সতর্কতা ছাড়াই কাজ করেছে।

এখানে সম্পূর্ণ কোডটির গিস্ট । টেনসরফ্লো ইনস্টল করার কোডটি নীচে দেখানো হয়েছে:

!pip install tensorflow==2.0

সফল সম্পাদনের স্ক্রিনশটটি নীচে দেখানো হয়েছে:

এখানে চিত্র বর্ণনা লিখুন

আপডেট: এই বাগটি ঠিক করা হয়েছেTensorflow Version 2.2.


5
আপনার প্রতিক্রিয়ার জন্য আপনাকে ধন্যবাদ. আপনি ঠিক বলেছেন, সতর্কতা বার্তা সংস্করণ না হওয়া পর্যন্ত চালু করা হয়নি 2.1.0rc0। যাইহোক, আমি ভয় পাই আমার প্রশ্ন দেহাবশেষ: "এটা কি কিছু নিগৃহীত করার অর্থ কী ...করতে ['...']?"
jorijnsmit

3
আমি লক্ষ্য করেছি যে কিছু সম্ভবত অনিচ্ছাকৃত কাপড় ঘটে যখন sample_weight_mode=Noneএবং target_structureধরনের হয় dict, sample_weight_modesতাহলে [None]এবং ব্যতিক্রম broadcast_sample_weight_modesকারণে ধরা dict। এটিকে কি বাগ হিসাবে বিবেচনা করা যেতে পারে?
ফ্রান্স্জ নোল

2
নাঃ। প্রশ্ন মতামত এবং upvotes সংগ্রহ করে কিন্তু উত্তর নেই।
jorijnsmit

1
@ গেকেননোস: আপনার যদি মনে হয় এটি একটি বাগ, আপনি কি গিথুব টেনসরফ্লো রেপোজিটরিতে একটি বাগ ফাইল করতে পারেন?
টেনসরফ্লো সমর্থন

1
এটি অবশ্যই একটি বাগ, তবে এটি এখন টেনসরফ্লো ২.২
জেএলএইচ

2

পরিবর্তে অভিধান সরবরাহ করার জন্য

weights = {'0': 42.0, '1': 1.0}

আমি একটি তালিকা চেষ্টা করেছিলাম

weights = [42.0, 1.0]

এবং সতর্কতা অদৃশ্য হয়ে গেল।


ধন্যবাদ মানুষ! আমি অভিধান সহ চেষ্টা করেছিলাম (ব্যর্থ)। তালিকা ব্যবহার করে ত্রুটি স্থির!
ভিক্টর মনডেজার-গুয়েরা

যদিও এটি ত্রুটি থেকে মুক্তি পেতে পারে, আমার জন্য এটি প্রতিটি শ্রেণীর জন্য ওজনকে আরও খারাপ ফলাফল করে। আমি তালিকায় স্যুইচ করার আগে ধারাবাহিকতা যাচাই করতাম।
CanofDrink
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.