このページは Cloud Translation API によって翻訳されました。
Switch to English

tf.ensure_shape

TensorFlow 1つのバージョン GitHubの上のソースを表示

形状が保持していることを、実行時にテンソルとチェックの形状を更新します。

熱心な実行では、これは、入力を返し形状アサーションは、次のとおりです。

x = tf.constant([1,2,3])
print(x.shape)
(3,)
x = tf.ensure_shape(x, [3])
x = tf.ensure_shape(x, [5])
Traceback (most recent call last):

tf.errors.InvalidArgumentError: Shape of tensor dummy_input [3] is not
  compatible with expected shape [5]. [Op:EnsureShape]

内部tf.functionまたはv1.Graphコンテキストそれビルド時および実行時の形状の両方をチェックします。これは、より厳しいtf.Tensor.set_shapeのみビルド時の形状を確認します。

例えば、既知のサイズのローディング画像の:

@tf.function
def decode_image(png):
  image = tf.image.decode_png(png, channels=3)
  # the `print` executes during tracing.
  print("Initial shape: ", image.shape)
  image = tf.ensure_shape(image,[28, 28, 3])
  print("Final shape: ", image.shape)
  return image

機能をトレースするとき、何のオペレーションが実行されていない、形状が未知であってもよいです。参照してください。 具体的な機能は、ガイドの詳細については。

concrete_decode = decode_image.get_concrete_function(
    tf.TensorSpec([], dtype=tf.string))
Initial shape:  (None, None, 3)
Final shape:  (28, 28, 3)
image = tf.random.uniform(maxval=255, shape=[28, 28, 3], dtype=tf.int32)
image = tf.cast(image,tf.uint8)
png = tf.image.encode_png(image)
image2 = concrete_decode(png)
print(image2.shape)
(28, 28, 3)
image = tf.concat([image,image], axis=0)
print(image.shape)
(56, 28, 3)
png = tf.image.encode_png(image)
image2 = concrete_decode(png)
Traceback (most recent call last):

tf.errors.InvalidArgumentError:  Shape of tensor DecodePng [56,28,3] is not
  compatible with expected shape [28,28,3].
@tf.function
def bad_decode_image(png):
  image = tf.image.decode_png(png, channels=3)
  # the `print` executes during tracing.
  print("Initial shape: ", image.shape)
  # BAD: forgot to use the returned tensor.
  tf.ensure_shape(image,[28, 28, 3])
  print("Final shape: ", image.shape)
  return image
image = bad_decode_image(png)
Initial shape:  (None, None, 3)
Final shape:  (None, None, 3)
print(image.shape)
(56, 28, 3)

x A Tensor
shape A TensorShapeこのテンソルの形状を表す、 TensorShapeProto 、リスト、タプル、またはNone。
name この操作の名前(オプション)。 「EnsureShape」にデフォルト設定。

A Tensor 。同じ種類と内容を持っているx 。実行時には、提起tf.errors.InvalidArgumentError場合shapeの形状と互換性がありませんx