我正在尝试使用以下函数为神经协同过滤生成训练批次,但出现以下错误。
def batch_generator(x, y, batch_size, n_batch, shuffle, user_dim, item_dim):
""" batch generator to supply data for training and testing """
user_df, item_df = x
counter = 0
training_index = np.arange(user_df.shape[0])
if shuffle:
np.random.shuffle(training_index)
while True:
batch_index = training_index[batch_size*counter:batch_size*(counter+1)]
user_batch = tf.one_hot(user_df[batch_index], depth=user_dim)
item_batch = tf.one_hot(item_df[batch_index], depth=item_dim)
y_batch = y[batch_index]
counter += 1
yield [user_batch, item_batch], y_batch
if counter == n_batch:
if shuffle:
np.random.shuffle(training_index)
counter = 0
这给了我以下错误“无法找到节点的有效设备。节点:{{node OneHot}}”
tensorflow.python.framework.errors_impl.NotFoundError: Could not find valid device for node.
Node:{{node OneHot}}
All kernels registered for op OneHot :
device='XLA_CPU'; TI in [DT_INT32, DT_UINT8, DT_INT64]; T in [DT_FLOAT, DT_DOUBLE, DT_INT32, DT_UINT8, DT_INT16, ..., DT_UINT16, DT_COMPLEX128, DT_HALF, DT_UINT32, DT_UINT64]
device='XLA_CPU_JIT'; TI in [DT_INT32, DT_UINT8, DT_INT64]; T in [DT_FLOAT, DT_DOUBLE, DT_INT32, DT_UINT8, DT_INT16, ..., DT_UINT16, DT_COMPLEX128, DT_HALF, DT_UINT32, DT_UINT64]
device='CPU'; TI in [DT_INT64]; T in [DT_VARIANT]
device='CPU'; TI in [DT_INT32]; T in [DT_VARIANT]
device='CPU'; TI in [DT_UINT8]; T in [DT_VARIANT]
device='CPU'; TI in [DT_INT64]; T in [DT_RESOURCE]
device='CPU'; TI in [DT_INT32]; T in [DT_RESOURCE]
device='CPU'; TI in [DT_UINT8]; T in [DT_RESOURCE]
device='CPU'; TI in [DT_INT64]; T in [DT_STRING]
device='CPU'; TI in [DT_INT32]; T in [DT_STRING]
device='CPU'; TI in [DT_UINT8]; T in [DT_STRING]
device='CPU'; TI in [DT_INT64]; T in [DT_BOOL]
device='CPU'; TI in [DT_INT32]; T in [DT_BOOL]
device='CPU'; TI in [DT_UINT8]; T in [DT_BOOL]
device='CPU'; TI in [DT_INT64]; T in [DT_COMPLEX128]
device='CPU'; TI in [DT_INT32]; T in [DT_COMPLEX128]
device='CPU'; TI in [DT_UINT8]; T in [DT_COMPLEX128]
device='CPU'; TI in [DT_INT64]; T in [DT_COMPLEX64]
device='CPU'; TI in [DT_INT32]; T in [DT_COMPLEX64]
device='CPU'; TI in [DT_UINT8]; T in [DT_COMPLEX64]
device='CPU'; TI in [DT_INT64]; T in [DT_DOUBLE]
device='CPU'; TI in [DT_INT32]; T in [DT_DOUBLE]
device='CPU'; TI in [DT_UINT8]; T in [DT_DOUBLE]
device='CPU'; TI in [DT_INT64]; T in [DT_FLOAT]
device='CPU'; TI in [DT_INT32]; T in [DT_FLOAT]
[Op:OneHot] name: one_hot/
非常感谢任何帮助