tensorflow——tf.one_hot以及tf.sparse_to_dense函数

本文通过实例详细介绍了使用 TensorFlow 中的 tf.one_hot 和 tf.sparse_to_dense 函数进行 one-hot 编码的方法。展示了如何将整数标签转换为 one-hot 向量,并比较了不同函数的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、tf.one_hot函数

import numpy as np
import tensorflow as tf

SIZE=6
CLASS=10
label1=np.random.randint(0,10,size=SIZE) 

b = tf.one_hot(label1,CLASS,1,0)
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    sess.run(b)
    print(sess.run(b))

输出结果:
产生的随机数:[7, 2, 9, 8, 4, 2]

[[ 0.  0.  0.  0.  0.  0.  0.  1.  0.  0.]
 [ 0.  0.  1.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  1.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  1.  0.]
 [ 0.  0.  1.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  1.  0.  0.  0.  0.  0.]]

2、tf.sparse_to_dense函数

import tensorflow as tf   
import numpy as np

SIZE=6
CLASS=10
label=np.random.randint(0,10,size=SIZE) 
label=np.reshape(label,[SIZE,1])
index = np.reshape(np.arange(SIZE), [SIZE, 1])
#use a matrix  
concated = tf.concat([index, label], 1)  
onehot_labels = tf.sparse_to_dense(concated, [SIZE, CLASS], 1.0, 0.0)  

#use a vector  
concated2=tf.constant([1,3,4])  
onehot_labels2 = tf.sparse_to_dense(concated2, [ CLASS], 1.0, 0.0)

#use a scalar  
concated3=tf.constant(5)  
onehot_labels3 = tf.sparse_to_dense(concated3, [ CLASS], 1.0, 0.0)  

with tf.Session() as sess:  
    sess.run(tf.global_variables_initializer())
    result1=sess.run(onehot_labels)  
    result2 = sess.run(onehot_labels2)  
    result3 = sess.run(onehot_labels3)  
    print ("This is result1:")  
    print (result1)  
    print ("This is result2:")  
    print (result2)  
    print ("This is result3:")  
    print (result3) 

输出结果:
产生的随机数:[7, 2, 9, 8, 4, 2]

This is result1:
[[ 0.  0.  0.  0.  0.  0.  0.  1.  0.  0.]
 [ 0.  0.  1.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  1.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  1.  0.]
 [ 0.  0.  1.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  1.  0.  0.  0.  0.  0.]]
This is result2:
[ 0.  1.  0.  1.  1.  0.  0.  0.  0.  0.]
This is result3:
[ 0.  0.  0.  0.  0.  1.  0.  0.  0.  0.]
import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense,Dropout,Convolution2D,MaxPooling2D,Flatten from tensorflow.keras.optimizers import Adam,SGD from tensorflow.keras.utils import to_categorical import numpy as np mnist = tf.keras.datasets.mnist (x_train,y_train) ,(x_test,y_test) = mnist.load_data() x_train = x_train.reshape(x_train.shape[0],-1)/255 x_test = x_test.reshape(x_test.shape[0],-1)/255 y_train = to_categorical(y_train,num_classes=10) # convert to one hot format y_test = to_categorical(y_test,num_classes=10) model = Sequential() model.add(Dense(units=30, #输出维度,表示有几个神经元 input_dim=784, #输入尺寸 activation='sigmoid', name='lay1')) model.add(Dense(units=10, #输出维度,表示有几个神经元 activation='sigmoid', name='lay2')) # sgd = SGD(lr=0.2) from tensorflow.keras import optimizers sgd = optimizers.SGD(learning_rate=0.2) model.compile( optimizer=tf.keras.optimizers.Adam(learning_rate=0.0001), loss = 'categorical_crossentropy', metrics= ['accuracy'] ) model.fit(x_train, y_train, batch_size=64, epochs=50) loss,accuracy = model.evaluate(x_test,y_test) print(loss) print('accuracy',accuracy) weight_Dense,bias_Dense = model.get_layer('lay1').get_weights() np.savetxt('weight1.txt',weight_Dense,fmt='%.06f,') np.savetxt('bias1.txt',bias_Dense,fmt='%.06f,') # print(weight_Dense,bias_Dense) weight_Dense,bias_Dense = model.get_layer('lay2').get_weights() np.savetxt('weight2.txt',weight_Dense,fmt='%.06f,') np.savetxt('bias2.txt',bias_Dense,fmt='%.06f,') # print(weight_Dense,bias_Dense) model.save('2lays.h5') 以上代码的功能
最新发布
07-24
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值