Tensorflow: операции tf.math не добавляются в граф - PullRequest
0 голосов
/ 08 мая 2020

Я создал график, который содержит некоторые операции из tf.math. Я назвал их правильно. И он работает правильно, если я его создам и запускаю сеанс в той же функции. Но если я хочу сохранить график или восстановить его в другой функции, эти узлы не будут видны, ie AssertionError: не на графике. Я хочу получить tf.math.count_nonzero в качестве вывода

def create_graph(kernel_size, output_pb_file_path):
  with tf.Graph().as_default() as g:
    # Make Gaussian Kernel with desired specs.
    gauss_kernel = gaussian_kernel(kernel_size, 0.0, 4.0)

    # Expand dimensions of `gauss_kernel` for `tf.nn.conv2d` signature.
    gauss_kernel = gauss_kernel[:, :, tf.newaxis, tf.newaxis]

    image1 = tf.placeholder(dtype=tf.uint8, shape=(1, 480, 848, 1), name='image1')
    image2 = tf.placeholder(dtype=tf.uint8, shape=(1, 480, 848, 1), name='image2')

    preprocessed_image1 = tf.dtypes.cast(image1, tf.float32)
    preprocessed_image2 = tf.dtypes.cast(image2, tf.float32)

    # Convolve.
    smooth_image1 = tf.nn.conv2d(preprocessed_image1, gauss_kernel, strides=[1, 1, 1, 1], padding="SAME",
                                 name='smooth_image1')

    smooth_image2 = tf.nn.conv2d(preprocessed_image2, gauss_kernel, strides=[1, 1, 1, 1], padding="SAME",
                                 name='smooth_image2')

    diff_image = tf.math.abs(tf.math.subtract(smooth_image1, smooth_image2, name='sub_diff'), name='abs_diff')

    bino = tf.cast(diff_image, tf.uint8, name='bino')
    bino_thresh = tf.cast(bino > 50, tf.uint8, name='bino_thresh')
    bino_jpg = tf.multiply(bino_thresh, 255, name='bino_jpg')
    bino_jpg = tf.reshape(bino_jpg, (480, 848, 1), name='bino_jpg_reshaped')
    nonzero = tf.math.count_nonzero(bino_jpg, dtype=tf.int64, name='nonzero')
    return g

Затем в другой функции я делаю:

nonzero = comp_graph.get_tensor_by_name('nonzero:0')

И получаю:

AssertionError: nonzero is not in graph

Это происходит только с операциями tf.math, и я не могу понять ни причину, ни способ правильно выполнить эту операцию

Я бы очень признателен за любые мысли

...