我有一个数字输入,范围在[0, 15]
,我想以4位的二进制代码提供给我的网络。例如,输入[0,1,4,7]
应为[[0,0,0,0],[0,0,0,1],[0,1,0,0],[0,1,1,1]]
。
tf.one_hot
操作已接近,但不完全符合我的要求。是否有任何优雅的方式,无论是使用Numpy还是TensorFlow,将我的输入转换为二进制编码,以便将其输入我的网络?
我最好的解决方案是为每个值使用np.binary_repr
,并将其从string
转换为integers
数组,但我觉得这不是一个好的解决方案(转换两次) ,首先进入字符串,然后进入数组)。
答案 0 :(得分:1)
这样的事情:
np.unpackbits(np.array([[0,1,4,7]],np.uint8)).reshape(-1,4)[1::2,:]
我确信它可以被改进,但至少它是矢量化的
或者这可能更有意义:
np.unpackbits(np.array([[0,1,4,7]],np.uint8)).reshape(-1,8)[:,4:]