2017-03-07 10 views
0

次はmath_grad.ccのline543からline554にある:FunctionDefHelper :: CreateとFunctionDefHelper :: Defineの違いは何ですか?

543 *g = FDH::Create("_", 
544     // Input defs 
545     {"x:T", "i:int32", "dy:T"}, 
546     // Ret val defs 
547     {"dx:T", "di:int32"}, 
548     // Attr defs 
549     {{"T: {half, float, double}"}}, 
550     // Nodes 
551     nodes, 
552     // Return values 
553     {{"dx", "dx:output:0"}, {"di", "di:y:0"}}); 
554 return Status::OK(); 

と次はmath_grad.ccのline593からline615にあり、

593 Status MinMaxGradHelper(const string& op, const AttrSlice& attrs, 
594       FunctionDef* g) { 
595 // clang-format off 
596 *g = FDH::Define(
597  // Arg defs 
598  {"x:T", "i:int32", "dy:T"}, 
599  // Ret val defs 
600  {"dx:T", "di:int32"}, 
601  // Attr defs 
602  {{"T: {half, float, double}"}}, 
603  { 
604   // keep_dims because we need to do x == y, which requires x 
605   // and y are broadcastable. 
606   {{"y"}, op, {"x", "i"}, {{"T", "$T"}, {"keep_dims", true}}}, 
607   {{"mask"}, "Equal", {"x", "y"}, {{"T", "$T"}}}, 
608   {{"mask_cast"}, "Cast", {"mask"}, {{"SrcT", DT_BOOL}, {"DstT", "$T"}}}, 
609   {{"mask_sum"}, "Sum", {"mask_cast", "i"}, {{"T", "$T"}}}, 
610   {{"norm_dy"}, "Div", {"dy", "mask_sum"}, {{"T", "$T"}}}, 
611   {{"sy"}, "Shape", {"y"}, {{"T", "$T"}}}, 
612   {{"norm_dy_reshaped"}, "Reshape", {"norm_dy", "sy"}, {{"T", "$T"}}}, 
613   {{"dx"}, "Mul", {"mask_cast", "norm_dy_reshaped"}, {{"T", "$T"}}}, 
614   {{"di"}, "ZerosLike", {"i"}, {{"T", DT_INT32}}} 
615  }); 

私はTensorFlowのかどうかを判断するん方法については少し混乱しています FDH :: DefineまたはFDH :: Createを使用してください。

私が知っているように、FDH :: DefineはFunctionDefを定義するための古い承認です。私はFDH :: DefineがFDH :: Createと比較してより少ない情報を提供すると考えました。

だから、私はその違いを教えてくれるのですか?どんなアドバイスもありがとうございます。同僚から

答えて

0

回答:

「FunctionDefsはまだパブリックAPIの一部ではありません。私たちは彼らのために、実際のAPIをサポートしているまで、これらの機能を定義するための一時的なメカニズムであるこれら2つの関数の 一つは古いと鏡です。

私は関数を削除しませんでした。新しいフォーマットを作成しましたが、これは単純なケースでのみ機能します。その関数を使用して移行するコードが多すぎますそれらのすべて。

しかし、その要点は、公開APIの一部ではなく、変更される可能性があるため、これはうまく文書化されていません。

関連する問題