TF常见函数:
创建一个张量:tf.constant(张量内容,dtype=数据类型)
将numpy格式转为tensor:tf.convert_to_tensor(数据名,dtype=数据类型)
创建全为0的张量:tf.zeros(维度)
创建全为1的张量:tf.ones(维度)
创建全为指定值的张量:tf.fill(维度,指定值)
生成正态分布的随机数:tf.random.normal(维度,均值mean,标准差stddev)
生成截断式正态分布随机数:tf.random.truncated_normal(维度,均值mean,标准差stddev)随机数均在内
生成均匀分布随机数:tf.random.uniform(维度,minval=最小值,maxval=最大值)
强制类型转换:tf.cast(张量名,dtype=数据类型)
计算元素的最小值:tf.reduce_min(张量名)
计算元素的最大值:tf.reduce_max(张量名)
axis=0代表按照纵向计算,axis=1代表按横向计算。
计算平均值:tf.reduce_mean(张量,axis=操作维度)
计算和:tf.reduce_sum(张量,axis=操作维度)
将变量标记为可训练:tf.Variable()
数学四则运算:tf.add(),tf.subtract(),tf.multiply(),tf.divide()
平方,次方,开方运算:tf.square(),tf.pow(),tf.sqrt()
矩阵乘:tf.matmul()
将输入特征和标签对应:tf.data.Dataset.from_tensor_slides(输入特征,标签)
计算梯度:tf.GradientTape.gradient(函数,求导变量)
独热码:tf.one_hot(待转换数据,分类维度)(用于分类问题)
softmax函数:tf.nn.softmax()
自减操作:assign_sub()
返回张量沿指定维度最大值的下标号:tf.argmax(张量,axis)
条件语句真返回A,条件语句假返回B:tf.where(条件语句,真返回A,假返回B)
返回[0,1)之间的随机数:np.random.RandomState.ran(维度)
将两个数组垂直叠加:np.vstack()
返回一个数组np.mgrid(起始值:结束值:步长)
x.ravel()将x数组变为一维数组
np.c_[数组1,数组2]使返回的间隔数值点配对
mse:tf.reduce_mean(tf.square(y-))
交叉熵损失函数:tf.losses.categorical_crossentropy(y,)
softmax和交叉熵结合:tf.nn.softmax_cross_entropy_with_logits(y,)
l2正则化:tf.nn.l2_loss(参数)
.reshape(1,-1)转化为一行,reshape(2,-1)转化为两行,reshape(-1,1)转化为一列,reshape(-1,2)转化为两列
model=tf.keras.models.Sequential([网络结构])
网络结构:拉直层:tf.keras.layers.Flatten(),全连接层:tf.keras.layers.Dense(神经元个数,activation=激活函数(eg:relu,softmax.sigmoid,tanh),kernel_regularizer=正则化(eg:tf.keras.regularizers.l1()),卷积层:tf.keras.layers.Conv2D(filters=卷积核个数,kernel_size=卷积核尺寸,strides=卷积步长,padding=“vaild”or"sam"),LSTM:tf.keras.layers.LSTM()
model.compile(optimizer=优化器,loss=损失函数,metrics=["准确率"])
model.fit(训练集的输入特征,训练集标签,batch_size=,epochs=,validation_data=(测试集的输入特征,测试集的标签),validation_split=从训练集划分多少给测试集,validation_freq=多少次epoch训练一次)
model.summary()
读取模型:load_weights(路径文件名)
保存模型:tf.keras.callbacks.ModelCheckpoint(filepath=文件路径名,save_weights_only=True/False,save_best_only=True/False) history=model.fit(callbacks=[cp_callback])
返回模型中可训练的参数:model.trainable_variables
设置print函数输出格式:np.set_printoptions(threshold=np.inf)超过threshold则打印信息被省略号替代,np.inf代表为无限大。
卷积计算是一种有效的图像特征提取方法:输入特征图的深度决定了当前层卷积核的深度,当前层卷积核的个数决定了当前层输出特征图的深度
感受野:卷积神经网络各输出特征图中每个像素点,在原始图片上映射区域的大小
如果不想因为卷积改变输入特征图的尺寸,可以采用全0填充(即在输入特征图周围填充全0,padding=SAME)
tf描述卷积层:tf.keras.layers.Conv2D(filters=卷积核个数,kernel_size=卷积核尺寸,strides=滑动步长,padding=same/valid,activation=“relu,sigmoid”,input_shape=(高,宽,通道数))
批标准化一般在卷积层和激活层之间:tf.keras.layers.BatchNormalization()
池化用于减少特征数据量:最大池化可提取图片纹理(tf.keras.layers.MaxPool2D(pool_size=池化核尺寸,strides=池化步长,padding=valid/same)),均值池化可保留背景特征(tf.keras.layers.AveragePooling2D(pool_size=池化核尺寸,strides=池化步长,padding=valid/same))
舍弃:在训练时将一部分神经元舍弃tf.keras.layers.Dropout(舍弃的概率)
tf.concat():拼接张量的函数
t1 = [[1, 2, 3], [4, 5, 6]]
t2 = [[7, 8, 9], [10, 11, 12]]
tf.concat([t1, t2], 0) # [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
tf.concat([t1, t2], 1) # [[1, 2, 3, 7, 8, 9], [4, 5, 6, 10, 11, 12]]
# tensor t3 with shape [2, 3]
# tensor t4 with shape [2, 3]
tf.shape(tf.concat([t3, t4], 0)) # [4, 3]
tf.shape(tf.concat([t3, t4], 1)) # [2, 6]
循环核:参数时间共享,循环层提取时间信息
embedding:单词编码方法,tf.keras.layers.Embedding(词汇表大小,编码维度)入Embedding时,x_train维度:[送入样本数,循环核时间展开步数]