在嵌套的练习中,我们首先要处理下tfrecord格式的文件,关于tfrecord的处理建议看一下这篇文章
我们这里主要讲解一下对于得到的字符串如何转化为特征输入。
我这里创建一个输入字典:
num = {'numbers': ['1', '1', '2', '3', '4', '5', '6'], 'prime': ['2', '3', '5', '7']}
再创立一个词汇表:
lst = ('1', '2')
下一步用词汇表返还字典的结果:
column = tf.feature_column.categorical_column_with_vocabulary_list(key='numbers', vocabulary_list=lst)
indicator = tf.feature_column.indicator_column(column)
tensor = tf.feature_column.input_layer(num, [indicator])
我们打印出结果看看:
with tf.Session() as sess:
sess.run(tf.tables_initializer())
print(sess.run(tensor))
[[1. 0.]
[1. 0.]
[0. 1.]
[0. 0.]
[0. 0.]
[0. 0.]
[0. 0.]]
我们这里很明显可以看出,对于num字典只处理了key为numbers的values()
我们这里字典的长度为2, num中numbers的长度为7,返回的结果的shape是(7,2)
如果在神经网络中我们输入的字典shape为(None) 这里None表示为不定长。 字典长度为50,那么返回的结果为(None, 50)
很明显这不是我们想要的。
这里我们更改一下写法:</