Tensorflow 2.x: преобразование байтовой строки в int на карте - PullRequest
1 голос
/ 05 мая 2020

У меня есть набор изображений TFRecordDataset. Каждая запись имеет изображение, целочисленную метку и идентификатор байтового массива. Байт-массив - это шестнадцатеричное представление некоторого числа.

I wi sh для заполнения случайных операций производной от идентификатора. Как мне это сделать?

Следующая попытка не удалась:

def func(image, label, idnum):
    '''Example idnum: b"abcdef012"'''
    seed = tf.py_function(func=lambda x: int(x.numpy().decode(), 16),
                          inp=[idnum], Tout=tf.int64)
    ran = tf.random.uniform(shape=(), seed=seed)

Вот сообщение об ошибке:

TypeError: Expected int for argument 'seed2' not <tf.Tensor 'random_uniform/mod:0' shape=<unknown> dtype=int64>.

В обычном python, я бы преобразовал такой байтовая строка в int следующим образом:

x = b'abcdef012'
i = int(x.decode(), 16)
...