Не было зарегистрировано OpKernel для поддержки Op 'HashTableV2' с этими атрибутами. Зарегистрированные устройства: [CPU, GPU], Зарегистрированные ядра: - PullRequest
0 голосов
/ 07 ноября 2018

Я кодирую с tenorflow 1.5.0, Python 3.5. Я хочу создать хеш-таблицу. Поскольку я собираюсь присвоить ему значения позже, я создаю его в функции init следующим образом (значения и форма задаются случайным образом) введите описание изображения здесь

но потом я сталкиваюсь с такой проблемой введите описание изображения здесь

Кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Ответы @jdehesa действительно великолепны. Меня устраивает!!! моя версия tf 1.4, python = 3.6

Вот мой код, который работает:

import tensorflow as tf
from tensorflow.contrib.lookup import *

k = tf.range(1, 3, dtype=tf.int64)
v = tf.range(5, 7, dtype=tf.int64)
table = tf.contrib.lookup.HashTable(
    tf.contrib.lookup.KeyValueTensorInitializer(k, v, key_dtype=tf.int64, value_dtype=tf.int64), -1)

out = table.lookup(tf.constant([2,1], dtype=tf.int64))

with tf.Session() as sess:
    print(sess.run([k, v]))
    table.init.run()
    print(out.eval())
0 голосов
/ 07 ноября 2018

Кажется, что реализация HashTable в вашей версии TensorFlow не предоставляет ядра для каждой возможной комбинации типов ключа и значения. Вы можете сделать две вещи:

  • Согласно вашему сообщению об ошибке, в ядре есть реализация 64-битных целочисленных ключей и 32-битных значений с плавающей запятой. Таким образом, одно из возможных исправлений - просто изменить тип данных с keys на tf.int64:

    keys = tf.constant([1, 2, 3]), dtype=tf.int64)
    
  • Другая возможность - обновить TensorFlow до версии, в которой реализована эта комбинация ключа и значения. Кажется, это было добавлено в версии v1.11.0-rc0 ( см. Commmit ), поэтому обновление до этой или более поздней версии (как правило, рекомендуется обновить до стабильной версии). вместо кандидата на выпуск) также должна решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...