サインセクションのテンソルフロードキュメントには、次のコードスニペットがあります
@tf.function
def train(model, optimizer):
train_ds = mnist_dataset()
step = 0
loss = 0.0
accuracy = 0.0
for x, y in train_ds:
step += 1
loss = train_one_step(model, optimizer, x, y)
if tf.equal(step % 10, 0):
tf.print('Step', step, ': loss', loss, '; accuracy', compute_accuracy.result())
return step, loss, accuracy
step, loss, accuracy = train(model, optimizer)
print('Final step', step, ': loss', loss, '; accuracy', compute_accuracy.result())
step
変数に関して小さな質問があります。これは整数であり、テンソルではありません。サインは整数などの組み込みのPython型をサポートしています。したがって、tf.equal(step%10,0)
を単純にstep%10 == 0
正しく変更できますか?
はい、あなたが正しい。整数変数ステップは、グラフ表現に変換された場合でもPython変数のままです。を呼び出すと、変換結果を確認できますtf.autograph.to_code(train.python_function)
。
すべてのコードを報告せずに、step
変数関連部分のみを報告すると、次のことがわかります。
def loop_body(loop_vars, loss_1, step_1):
with ag__.function_scope('loop_body'):
x, y = loop_vars
step_1 += 1
まだPython操作です(そうでないstep_1.assign_add(1)
場合は、手順1がであった場合になりますtf.Tensor
)。
直筆とtf.functionの詳細については、私は記事読んで示唆https://pgaleone.eu/tensorflow/tf.function/2019/03/21/dissecting-tf-function-part-1/ときに何が起こるかを簡単に説明します関数が変換されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加