1. 程式人生 > >OneHot編碼 Tensorflow實現和keras實現

OneHot編碼 Tensorflow實現和keras實現

tensorflow中tf.one_hot()函式的作用是將一個值化為一個概率分佈的向量,一般用於分類問題。

具體用法以及作用見以下程式碼:

y_train_dataset = np.concatenate((y_dataset_cate1,y_dataset_cate6,y_dataset_cate7,y_dataset_cate10),axis=0)
encoder = LabelEncoder()
encoder.fit(y_train_dataset)
y_train_dataset = encoder.transform(y_train_dataset)
print y_train_dataset
b = tf.one_hot(y_train_dataset,4,1,0)  
with tf.Session() as sess:  
    sess.run(tf.global_variables_initializer())  
    sess.run(b)  
    print('after one_hot',sess.run(b))  
# y_train_dataset = np_utils.to_categorical(y_train_dataset,num_classes=4)
結果:


利用keras的 from keras.utils import np_utils可以實現相同的功能,程式碼如下:

y_train_dataset = np.concatenate((y_dataset_cate1,y_dataset_cate6,y_dataset_cate7,y_dataset_cate10),axis=0)
encoder = LabelEncoder()
encoder.fit(y_train_dataset)
y_train_dataset = encoder.transform(y_train_dataset)
y_train_dataset = np_utils.to_categorical(y_train_dataset,num_classes=4)
print y_train_dataset

結果:


其中,共同用到了from sklearn.preprocessing import LabelEncoder

將原來的中文標籤轉換成數字,然後再分別用tf或者keras完成OneHot變換!