【发布时间】:2018-08-02 17:39:27
【问题描述】:
这是所需映射的简单用例。将整数标签映射到 one-hot 编码。我想提一下,对于这种特殊情况,应该使用tf.one_hot。但我想了解如何使用字典映射数据集。
import tensorflow as tf
import numpy as np
#CREATE A ONE-HOT ENCODING MAPPING
mike_labels = [164, 117, 132, 37, 66, 177, 225, 33, 28, 75, 7]
num_classes = len(mike_labels)
one_hots = np.eye(len(mike_labels))
one_hots = one_hots.tolist()
#used to convert labels to corresponding one-hot encoding
label_encoder = {orig: onehot for orig, onehot in zip(mike_labels,
one_hots)}
print (label_encoder[164])
print (label_encoder[28])
#CREATE A FAKE DATASET
raw_data = [[164],[28],[132],[7]]
dataset = tf.data.Dataset.from_generator(lambda: raw_data, tf.float32, output_shapes=[None])
iterator = dataset.make_one_shot_iterator()
next_element = iterator.get_next()
with tf.Session() as sess:
print(sess.run(next_element))
print(sess.run(next_element))
代码打印出 4 个值。第一个是直接从字典中获取的所需单热编码。后两个打印值是数据集中的前两个值。每个元素都显示为一个包含单个浮点数的列表。
[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0]
[ 164.]
[ 28.]
理想的答案将显示如何将数据集中的所有值更改为字典中相应的单热编码,使用提供的字典,不会使用@ 987654324@.
【问题讨论】:
标签: python python-3.x tensorflow