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


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.