keras基本函数介绍
一、to_categorical
from keras.utils import to_categorical #类别向量定义 b = [0,1,2,3,2,1] #调用to_categorical将b按照4个类别来进行转换,也就是b中数字只能来自【0,1,2,3】,因为是从0开始编码的。 b = to_categorical(b, 4) print(b)
OUT:
[[1. 0. 0. 0.] [0. 1. 0. 0.] [0. 0. 1. 0.] [0. 0. 0. 1.] [0. 0. 1. 0.] [0. 1. 0. 0.]]
二、sparse_categorical_crossentropy
tf.keras.backend.sparse_categorical_crossentropy( target, output, from_logits=False, axis=-1 )
具有整数目标的分类交叉熵。
参数:
- target:整数张量。例如维度是 [batch,max_len]
- output:由softmax产生的张量(除非from_logits是True,在这种情况下output预计是logits)。例如维度 [batch,max_len,vocab_size]
- from_logits:Boolean,无论output是softmax的结果,还是logits的张量。
- axis:Int指定通道轴。axis=-1对应于数据格式channels_last',并且axis = 1对应于数据格式channels_first`。
返回:
输出张量。
from keras.layers import Input,Lambda,Dense from keras.models import Model from bert4keras.backend import keras, K from bert4keras.optimizers import Adam import numpy as np input_data = Input(shape=(1,), dtype='float', name='input') output=Dense(3, activation='softmax')(input_data) model=Model(inputs=input_data,outputs=output) cross_entropy = K.sparse_categorical_crossentropy(input_data, output) model.add_loss(cross_entropy) model.compile(optimizer=Adam(1e-5)) x=np.array([0, 1, 2]) model.fit(x,None,epochs=10000,batch_size=1) model.predict(x) out: array([[0.36433217, 0.29800472, 0.33766317], [0.17361091, 0.48485544, 0.34153366], [0.06797539, 0.6481814 , 0.2838432 ]], dtype=float32)
三、pad_sequences函数
keras.preprocessing.sequence.pad_sequences(sequences, maxlen=None, dtype='int32', padding='pre', truncating='pre', value=0.)
sequences:浮点数或整数构成的两层嵌套列表maxlen:None或整数,为序列的最大长度。大于此长度的序列将被截短,小于此长度的序列将在后部填0.dtype:返回的numpy array的数据类型padding:‘pre’或‘post’,确定当需要补0时,在序列的起始还是结尾补`truncating:‘pre’或‘post’,确定当需要截断序列时,从起始还是结尾截断value:浮点数,此值将在填充时代替默认的填充值0
举例:
a=[[1,2,4],[1,2]] pad_sequences(a, maxlen=5, dtype='float32') OUT: array([[0., 0., 1., 2., 4.], [0., 0., 0., 1., 2.]], dtype=float32)

浙公网安备 33010602011771号