tensorflow:: Scope
#include <scope.h> একটি Scope অবজেক্ট এমন একগুচ্ছ সম্পর্কিত টেনসরফ্লো অপস-এর প্রতিনিধিত্ব করে, যাদের একই ধরনের বৈশিষ্ট্য, যেমন একটি সাধারণ নামের প্রিফিক্স, থাকে।
সারসংক্ষেপ
একটি স্কোপ অবজেক্ট হলো টেনসরফ্লো অপ প্রোপার্টিগুলোর ধারক। অপ কনস্ট্রাক্টরগুলো বাধ্যতামূলক প্রথম আর্গুমেন্ট হিসেবে একটি স্কোপ অবজেক্ট গ্রহণ করে এবং নির্মিত অপ-টি ওই অবজেক্টের প্রোপার্টিগুলো অর্জন করে।
একটি সহজ উদাহরণ:
using namespace ops; Scope root = Scope::NewRootScope(); auto c1 = Const(root, { {1, 1} }); auto m = MatMul(root, c1, { {41}, {1} }); GraphDef gdef; Status s = root.ToGraphDef(&gdef); if (!s.ok()) { ... }
পরিধির স্তরবিন্যাস :
Scope ক্লাসটি বিভিন্ন With<> ফাংশন প্রদান করে যা একটি নতুন স্কোপ তৈরি করে। নতুন স্কোপটিতে সাধারণত একটি প্রপার্টি পরিবর্তিত হয়, যখন অন্যান্য প্রপার্টিগুলো প্যারেন্ট স্কোপ থেকে উত্তরাধিকারসূত্রে প্রাপ্ত হয়। NewSubScope(name) মেথডটি স্কোপের মধ্যে তৈরি হওয়া অপস-এর নামের প্রিফিক্সের সাথে name যুক্ত করে, এবং WithOpName() সাফিক্স পরিবর্তন করে, যা অন্যথায় ডিফল্টভাবে অপস-এর টাইপ হয়ে থাকে।
নামের উদাহরণ:
Scope root = Scope::NewRootScope(); Scope linear = root.NewSubScope("linear"); // W will be named "linear/W" auto W = Variable(linear.WithOpName("W"), {2, 2}, DT_FLOAT); // b will be named "linear/b_3" int idx = 3; auto b = Variable(linear.WithOpName("b_", idx), {2}, DT_FLOAT); auto x = Const(linear, {...}); // name: "linear/Const" auto m = MatMul(linear, x, W); // name: "linear/MatMul" auto r = BiasAdd(linear, m, b); // name: "linear/BiasAdd"
স্কোপের মেয়াদকাল:
Scope::NewRootScope কল করার মাধ্যমে একটি নতুন স্কোপ তৈরি করা হয়। এটি এমন কিছু রিসোর্স তৈরি করে যা এই স্কোপ থেকে সরাসরি বা পরোক্ষভাবে উত্তরাধিকারসূত্রে প্রাপ্ত সমস্ত চাইল্ড স্কোপ দ্বারা ব্যবহৃত হয়। উদাহরণস্বরূপ, একটি নতুন স্কোপ একটি নতুন Graph অবজেক্ট তৈরি করে, যেখানে অপারেশনগুলো যুক্ত করা হয় যখন নতুন স্কোপটি বা এর চাইল্ড স্কোপগুলো কোনো Op কনস্ট্রাক্টর দ্বারা ব্যবহৃত হয়। নতুন স্কোপটির একটি Status অবজেক্টও থাকে, যা যেকোনো চাইল্ড স্কোপে কল করা Op-কনস্ট্রাক্টর ফাংশনগুলো ত্রুটি নির্দেশ করতে ব্যবহার করবে। Op-কনস্ট্রাক্টর ফাংশনগুলোকে op কনস্ট্রাক্ট করার আগে ok() মেথড কল করে স্কোপের স্ট্যাটাস পরীক্ষা করতে হয়।
সুতার নিরাপত্তা:
একটি Scope অবজেক্ট থ্রেড-সেফ নয়। থ্রেডগুলো একই সাথে একই Scope অবজেক্টের op-constructor ফাংশন কল করতে পারে না।
নির্মাতা এবং ধ্বংসকারী | |
|---|---|
Scope (const Scope & other) | |
~Scope () |
জনসাধারণের কার্যাবলী | |
|---|---|
ClearColocation () const | সমস্ত সহ-অবস্থান সীমাবদ্ধতা মুছে ফেলুন। |
ColocateWith (const Operation & op) const | একটি নতুন স্কোপ ফেরত দিন। |
ColocateWith (const Output & out) const | উপরেরটির জন্য সুবিধাজনক ফাংশন। |
ExitOnError () const | একটি নতুন স্কোপ ফেরত দিন। |
GetCompositeOpScopes (const string & composite_op_name) const | |
GetUniqueNameForOp (const string & default_name) const | string একটি অনন্য নাম ফেরত দিন, যদি কোনো অপ নাম নির্দিষ্ট করা না থাকে তবে default_name ব্যবহার করুন। |
NewSubScope (const string & child_scope_name) const | একটি নতুন স্কোপ ফেরত দিন। |
ToGraphDef (GraphDef *gdef) const | Status যদি status() এর মান Status::OK() হয়, তাহলে এই স্কোপে সংরক্ষিত Graph অবজেক্টটিকে একটি GraphDef প্রোটোতে রূপান্তর করুন এবং Status::OK() রিটার্ন করুন। |
UpdateStatus (const Status & s) const | void এই স্কোপের স্ট্যাটাস আপডেট করুন। |
WithAssignedDevice (const string & assigned_device) const | একটি নতুন স্কোপ ফেরত দেয়। |
WithControlDependencies (const gtl::ArraySlice< Operation > & control_deps) const | একটি নতুন স্কোপ ফেরত দিন। |
WithControlDependencies (const Output & control_dep) const | উপরেরটির মতোই, তবে control_dep আউটপুট তৈরি করে এমন অপারেশনের উপর নিয়ন্ত্রণ নির্ভরতা যোগ করা সুবিধাজনক। |
WithDevice (const string & device) const | একটি নতুন স্কোপ ফেরত দিন। |
WithKernelLabel (const string & kernel_label) const | একটি নতুন স্কোপ ফেরত দিন। |
WithNoControlDependencies () const | একটি নতুন স্কোপ ফেরত দিন। |
WithOpName (Ty... fragments) const | একটি নতুন স্কোপ ফেরত দিন। |
WithXlaCluster (const string & xla_cluster) const | একটি নতুন স্কোপ ফেরত দেয়। |
control_deps () const | const std::vector< Operation > & |
graph () const | Graph * |
graph_as_shared_ptr () const | std::shared_ptr< Graph > |
ok () const | bool |
operator= (const Scope & other) | Scope & |
status () const | Status |
পাবলিক স্ট্যাটিক ফাংশন | |
|---|---|
NewRootScope () | একটি নতুন স্কোপ ফেরত দিন। |
জনসাধারণের কার্যাবলী
সহ-অবস্থান করুন
Scope ColocateWith( const Operation & op ) const
একটি নতুন স্কোপ ফেরত দিন।
রিটার্ন করা স্কোপের মধ্যে তৈরি হওয়া সমস্ত অপস, অপসটি যে ডিভাইসে স্থাপন করা হয়েছে, সেই ডিভাইসেই সহ-অবস্থান করবে। দ্রষ্টব্য: এই ফাংশনটি শুধুমাত্র অভ্যন্তরীণ লাইব্রেরির মধ্যে ডিভাইসে অপস স্থাপনের স্থান নিয়ন্ত্রণের জন্য ব্যবহার করার উদ্দেশ্যে তৈরি। এর সর্বজনীন ব্যবহার উৎসাহিত করা হয় না, কারণ ডিভাইস প্লেসমেন্টের বাস্তবায়ন পরিবর্তন সাপেক্ষ।
ত্রুটিতে প্রস্থান করুন
Scope ExitOnError() const
একটি নতুন স্কোপ ফেরত দিন।
যেসব অপ-কনস্ট্রাক্টর ফাংশন স্কোপ আর্গুমেন্ট হিসেবে রিটার্ন করা স্কোপ গ্রহণ করে, সেগুলো স্কোপের স্ট্যাটাস সেট করার পরিবর্তে কোনো ত্রুটি শনাক্ত হওয়ার সাথে সাথেই এক্সিট করে।
GetCompositeOpScopes
CompositeOpScopes GetCompositeOpScopes( const string & composite_op_name ) const
GetUniqueNameForOp
string GetUniqueNameForOp( const string & default_name ) const
একটি অনন্য নাম ফেরত দিন, যদি কোনো অপ নাম নির্দিষ্ট করা না থাকে তবে default_name ব্যবহার করুন।
নিউসাবস্কোপ
Scope NewSubScope( const string & child_scope_name ) const
একটি নতুন স্কোপ ফেরত দিন।
এই স্কোপ দিয়ে তৈরি করা অপারেশনগুলোর প্রিফিক্স হিসেবে name/child_scope_name থাকবে। আসল নামটি বর্তমান স্কোপের মধ্যে অনন্য হবে। অন্য সব প্রোপার্টি বর্তমান স্কোপ থেকে উত্তরাধিকারসূত্রে প্রাপ্ত হবে। যদি child_scope_name খালি থাকে, তাহলে / চিহ্নটি বাদ দেওয়া হবে।
পরিধি
Scope( const Scope & other )
ToGraphDef
Status ToGraphDef( GraphDef *gdef ) const
যদি status() এর মান Status::OK() হয়, তাহলে এই স্কোপে সংরক্ষিত Graph অবজেক্টটিকে একটি GraphDef প্রোটোতে রূপান্তর করুন এবং Status::OK() রিটার্ন করুন।
অন্যথায়, GraphDef রূপান্তর না করে ত্রুটির স্থিতি যেমন আছে তেমনই ফেরত দিন।
স্ট্যাটাস আপডেট করুন
void UpdateStatus( const Status & s ) const
এই স্কোপের স্ট্যাটাস আপডেট করুন।
দ্রষ্টব্য: স্ট্যাটাস অবজেক্টটি এই স্কোপের সমস্ত চাইল্ডের মধ্যে শেয়ার করা হয়। যদি ফলাফলস্বরূপ স্ট্যাটাসটি Status::OK() না হয় এবং এই স্কোপে exit_on_error_ সেট করা থাকে, তাহলে এই ফাংশনটি LOG(FATAL) কল করার মাধ্যমে এক্সিট করে।
নির্ধারিত ডিভাইসের সাথে
Scope WithAssignedDevice( const string & assigned_device ) const
একটি নতুন স্কোপ ফেরত দেয়।
ফেরত আসা স্কোপের মধ্যে তৈরি হওয়া সমস্ত অপস-এর নির্ধারিত ডিভাইস assigned_device এ সেট করা হবে।
WithControlDependencies
Scope WithControlDependencies( const gtl::ArraySlice< Operation > & control_deps ) const
একটি নতুন স্কোপ ফেরত দিন।
রিটার্ন করা স্কোপের মধ্যে তৈরি হওয়া সমস্ত অপারেশনের কন্ট্রোল ডিপেন্ডেন্সি হিসেবে থাকবে control_deps ভেক্টরের অপারেশনগুলোর ইউনিয়ন এবং বর্তমান স্কোপের কন্ট্রোল ডিপেন্ডেন্সিগুলো।
WithControlDependencies
Scope WithControlDependencies( const Output & control_dep ) const
উপরেরটির মতোই, তবে control_dep আউটপুট তৈরি করে এমন অপারেশনের উপর নিয়ন্ত্রণ নির্ভরতা যোগ করা সুবিধাজনক।
ডিভাইস সহ
Scope WithDevice( const string & device ) const
একটি নতুন স্কোপ ফেরত দিন।
ফেরত আসা স্কোপের মধ্যে তৈরি হওয়া সমস্ত অপস-এর ডিভাইস ফিল্ডের মান 'ডিভাইস' সেট করা হবে।
কার্নেল লেবেল সহ
Scope WithKernelLabel( const string & kernel_label ) const
একটি নতুন স্কোপ ফেরত দিন।
নতুন স্কোপ দিয়ে তৈরি সমস্ত অপস-এর '_kernel' অ্যাট্রিবিউটের মান হবে kernel_label;
কোনো নিয়ন্ত্রণ নির্ভরতা ছাড়াই
Scope WithNoControlDependencies() const
একটি নতুন স্কোপ ফেরত দিন।
ফেরত আসা স্কোপের মধ্যে তৈরি হওয়া সমস্ত অপারেশনের অন্য কোনো অপারেশনের উপর নিয়ন্ত্রণের নির্ভরতা থাকবে না।
WithOpName
Scope WithOpName( Ty... fragments ) const
একটি নতুন স্কোপ ফেরত দিন।
রিটার্ন করা স্কোপের মধ্যে তৈরি হওয়া সমস্ত অপস-এর নাম name/StrCat(fragments...)[_suffix] এই ফর্ম্যাটের হবে।
WithXlaCluster
Scope WithXlaCluster( const string & xla_cluster ) const
একটি নতুন স্কোপ ফেরত দেয়।
ফেরত আসা স্কোপের মধ্যে তৈরি হওয়া সমস্ত অপস-এর _XlaCluster অ্যাট্রিবিউটটি xla_cluster এ সেট করা হবে।
নিয়ন্ত্রণ_নির্ভরতা
const std::vector< Operation > & control_deps() const
গ্রাফ
Graph * graph() const
গ্রাফ_অ্যাজ_শেয়ার্ড_পিটিআর
std::shared_ptr< Graph > graph_as_shared_ptr() const
ঠিক আছে
bool ok() const
অবস্থা
Status status() const
~স্কোপ
~Scope()
পাবলিক স্ট্যাটিক ফাংশন
নিউরুটস্কোপ
Scope NewRootScope()
একটি নতুন স্কোপ ফেরত দিন।
এটি একটি নতুন গ্রাফ তৈরি করে এবং এই গ্রাফে সম্পাদিত সমস্ত অপারেশনে ফেরত আসা অবজেক্টটিকে "রুট" স্কোপ হিসেবে ব্যবহার করতে হবে।