一、tf
下的常用API(下面这几个都比较常用,主要是定义处理数据)
1、tf.constant,tf.variable(它有比constant更多的属性,比如.assign,.assign_add,
.assign_sub,这几个属性是直接将返回值给var变量本身,也即直接改变本身的值),
tf.string,tf.range,tf.ones,tf.zeros,tf.linespace;tf.meshgrid.tf.RaggedTensor;定义数据
2、tf.fill,tf.shape,tf.one_hot,tf.sort,tf.split,tf.stack,tf.concat,tf.reshape,tf.squeeze,tf.reverse,
tf.tanspose,tf.unique;操作数据
3、tf.random.normal,tf.random.shuffle,tf.random.uniform;定义随机数
4、tf.function;操作函数
5、tf.device;指定在哪一个设备(GPU或CPU)上运算数据
6、tf.GradientTape,tf.gradients,tf.stop_gradient;用于自定义训练中的时候显式求导
二、tf.audio
下的常用API
1、tf.audio.decode_wav;解析WAV格式的音频文件成float的tensor,shape=(length,channels)
2、tf.audio.encode_wav;将上述的float类型的tensor编码成WAV格式的音频文件
三、tf.autograph
下的常用API
1、tf.autograph.to_graph;将普通的python程序转成tf的计算图,这样函数效率会提高
2、tf.autograph.to_code;和to_graph差不多,但是会以string的形式返回程序代码
四、tf.compat
下的常用API(compat本身就是兼容的意思)
1、tf.compat.as_bytes;将unicode或者bytesarray、bytes转成bytes
2、tf.compat.as_text;将string-like类型的数据转成Unicode
3、tf.compat.as_str_any;将输入转成str类型
4、tf.compat.v1,tf.compat.v2;这两个是用来兼容tf1.x和tf2.x的代码的,也即直接在v1或v2下调用这种属于自己版本的函数即可。v1.=tf1.;v2.=tf2.;它们就是根空间
五、tf.cofig
下的常用API(主要用于GPU或者CPU设置)
六、tf.data
下的常用API(主要用于生成和操作数据集dataset)
1、tf.data.Dataset下的常用API,也即已经生成的dataset能执行的方法
apply,batch,concatenate,enumerate,filter,from_generator,from_tensor_slices,
from_tensors,Interval,map,range,repeat,shuffle,take,skip
2、tf.data.TextLineDataset下的常用API,它是用来解析文件中的每一行生成dataset的,生成dataset之后的函数和1中的是完全一样的
3、tf.data.TFRecordDataset下的常用API,它是用来解析TFRecord文件生成dataset的,生成dataset之后的函数和1中的是完全一样的
七、tf.distribute
下的常用API(主要包含一些分布式策略,用于分布式训练)
1、tf.distribute.MirroredStrategy
2、tf.distribute.experimental.CentralStorageStrategy
3、tf.distribute.experimental.MultiWorkerMirroredStrategy
4、tf.distribute.experimental.ParameterServerStrategy
5、tf.distribute.experimental.TPUStrategy
八、tf.dtypes
下的常用API(主要用于数据类型转换)
1、tf.dtypes.as_dtype(type_value);将给定的类型值转换为DType;DType的取值主要有以下:
2、tf.dtypes.cast;进行数据类型转换
3、tf.dtypes.complex;将给定的两个数合并成复数(一个实部,一个虚部)
九、tf.estimator
下的常用API(这是高层API,不用自己搭模型,只需要输入数据,指定分类类别等等就行了;然后调用它的.train(),.evaluate(),.predict()
;主要是为了方便模型训练,评估和预测;其下有很多的estimator)
1、tf.estimator.add_metrics(estimator,metric_fn);往estimator中添加metric
2、tf.estimator.BaselineClassifier,tf.estimator.BaselineRegressor,tf.estimator.BaselineEstimator
3、tf.estimator.DNNClassifier,tf.estimator.DNNEstimator,tf.estimator.DNNRegressor
4、tf.estimator.LinearClassifier,tf.estimator.LinearEstimator,tf.estimator.LinearRegressor
十、tf.feature_column
下的常用API(主要是对那些离散值特别多的feature进行处理,将他们都变成0,1编码)
1、tf.feature_column.categorical_column_with_vocabulary
2、tf.feature_column.indicator_column
3、tf.feature_column.crossed_column
4、tf.feature_column.numeric_column
十一、tf.image
下的常用API(主要是对图像数据或者图片进行处理)
1、tf.image.adjust_brightness,tf.image.adjust_contrast,tf.image.adjust_gamma;调整亮度等
2、tf.image.central_crop,tf.image.crop_and_resize,tf.image.crop_to_bounding_box;裁剪
3、tf.image.draw_bounding_boxes;可绘制多个锚框
4、tf.image.flip_left_right,tf.image.flip_up_down;翻转图片
5、tf.image.grayscale_to_rgb,tf.image.hsv_to_rgb,tf.image.rgb_to_grayscale;颜色域转换
6、tf.image.random_flip_left_right,tf.image.random_crop;随机操作
7、tf.image.resize,tf.image.ResizeMethod.BILINEAR;ResizeMethod下有很多resize的方法
十二、tf.io
下的常用API(主要是对文件(图片,文本等)或者tenor进行解析或者编码或者序列化等操作)
1、tf.io.decode_gif,tf.io.decode_jpeg,tf.io.decode_image…;对图片进行解码
2、tf.io.decode_csv,tf.io.read_file,tf.io.write_file;读写和解析文件
3、tf.io.serialize_sparse,tf.io.serialize_tensor;序列化操作
4、tf.io.TFRecordOptions,tf.io.TFRecordWriter;对TFRecord文件进行操作
5、tf.io.gfile.(listdir,makedirs,remove,rename,exists,copy)(容易用到)
十三、tf.keras
下的常用API(重点,主要是和model,layers
相关)
1、tf.keras.Input;初始化一个keras tensor,用于向模型中输入数据,并指定数据的形状、数据类型等信息;当然也可以用于一般的计算,但用的不多。主要用法就是用于构建模型,如2中第一个列子所示。
2、tf.keras.Model;主要用于构建模型,有如下两种构建模型的方式:
①inputs = tf.keras.Input(shape=(3,))
x = tf.keras.layers.Dense(4, activation=tf.nn.relu)(inputs)
outputs = tf.keras.layers.Dense(5, activation=tf.nn.softmax)(x)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
②import tensorflow as tf
class MyModel(tf.keras.Model):
def __init__(self):
super(MyModel, self).__init__()
self.dense1 = tf.keras.layers.Dense(4, activation=tf.nn.relu)
self.dense2 = tf.keras.layers.Dense(5, activation=tf.nn.softmax)
def call(self, inputs):
x = self.dense1(inputs)
return self.dense2(x)
model = MyModel()
然后就可以调用model的各种属性:
model.layers,model.metrics_names
各种方法:model.compile,evaluate,evaluate_generator,fit,fit_generator,summary
predict,predict_generator,save,save_weights,load_weights,reset_states,reset_metrics
history=model.fit(),history=model.fit_generator(),history.history[loss或acc或val_loss或val_acc],它是一个字典
predict=model.predict(),predict=model.predict_generator(),它就是预测结果,比如形状可以查看它的形状:predict.shape=(num_samples,num_class),这是分类问题的输出
3、tf.keras.Sequential;是一个存放模型的线性堆栈,返回的也是一个model对象,只是比2中的model多了以下两个方法用于添加和删除layers:add,pop
4、tf.keras.activations.softmax,tf.keras.activations.relu,tf.keras.activations.tanh;
tf.nn.softmax,tf.nn.sigmoid,tf.nn.relu,tf.nn.tanh…;定义激活函数
5、tf.keras.applications.VGG16,tf.keras.applications.ResNet50…;直接调用定义好的模型
6、tf.keras.backend;是为keras提供的后端API,所谓后端就是一些比较基础的运算,也即数学计算方法,因为keras是高层API,它本身是没有这些基础运算的。这里和tf.math下面的数学运算方法比较接近。
7、tf.keras.callbacks.EarlyStopping,tf.keras.callbacks.ModelCheckpoint,
tf.keras.callbacks.TensorBoard;tf.keras.callbacks.LearningRateScheduler
回调函数是一组在训练的特定阶段被调用的函数集,你可以使用回调函数来观察训练过程中网络内部的状态和统计信息。通过传递回调函数列表到模型的.fit()中,即可在给定的训练阶段调用该函数集中的函数。下面给出一个LearningRateScheduler的例子,还是很形象的:
def scheduler(epoch):
if epoch < 10:
return 0.001
else:
return 0.001 * tf.math.exp(0.1 * (10 - epoch))
callback = tf.keras.callbacks.LearningRateScheduler(scheduler)
model.fit(data, labels, epochs=100, callbacks=[callback],
validation_data=(val_data, val_labels))
8、tf.keras.datasets;用于下载一些数据集,主要包括fashion_minist、cifa10、minist、cifa100,调用格式如下:
fashion_minist=keras.datasets.fashion_minist,fashion_minist.load_data()
9、tf.keras.estimator.model_to_estimator;用于将keras模型转成estimator,注意,在tf.estimator中是没有这个函数的,只有这个地方有
10、tf.keras.initializers;主要用于数据的初始化,创建一个初始化或者序列化/反序列化实例;如下所示是其调用格式:tf.keras.layers.Dense(32,activation=‘relu’,kernel_initializer=tf.keras.initializers.glorot_normal))
11、tf.keras.layers.Dense,tf.keras.layers.Conv2D,tf.keras.layers.MaxPool2D,tf.keras.layers.Flatten;
tf.nn.avg_pool,tf.nn.conv2d,tf.nn.dropout,tf.nn.max_pool…;
里面都是各种的网络层,如卷积层、全连、展平层、池化层等等
12、tf.keras.losses.MSE,tf.keras.losses.sparse_categorical_crossentropy;定义损失函数
tf.nn.nce_loss,tf.nn.l2_loss,tf.nn.sampled_softmax_loss…;
13、tf.keras.metrics;下面也有各种计算误差和准确度的函数,其中误差函数和tf.keras.losses下面差不多,但是用法不一样,前者返回的对象还有很多属性可用,而后者返回的就是一个值而已,(注意,metircs下的函数在reset之前会自动的将每次更新的数据加起来,这个加起来的理解是相当于上一次计算结果不算,然后把目前所有的数据加起来重新按照你指定的方法计算。所以,就有了这样一种效果,就是假如你使用的是Mean,那么最后计算的就是所有数据的平均值;如果是Sum,那么求的就是所有数据的和)。
在compile里面,metrics里面加的参数是用来在训练和测试中监控模型的,也即会把度量结果保存在history中,而loss才是真的用来训练的函数,比如更新梯度。
主要有:Accuracy、 CategoricalAccuracy、 CategoricalAccuracy、Mean、Sum
model.compile('sgd', loss=tf.keras.losses.SparseCategoricalCrossentropy())
model.compile('sgd', loss='mse',metrics=[tf.keras.metrics.SparseCategoricalCrossentropy()])
注意,tf.losses和tf.metrics、tf.optimizers下面的API都不用了,都转移到了tf.keras.losses和tf.keras.metrics、tf.keras.optimizers下面。
14、tf.keras.models;主要包括save、load、clone model;
还有tf.keras.models.model_from_config、json、yaml
15、tf.keras.optimizers.SGD,tf.keras.optimizers.Adam,定义优化器;
tf.keras.optimizers.schedules.LearningRateSchedule,定义学习率lr衰减器
16、tf.keras.preprocessing;数据预处理,主要使用读取图片的API,如下面前三行:
包括从directory或者dataframe读取图片、随机亮度 裁剪 旋转 缩放等等
tf.keras.preprocessing.image.ImageDataGenerator,
tf.keras.preprocessing.image.load_img,
tf.keras.preprocessing.image.random_brightness,
tf.keras.preprocessing.image.random_rotation
tf.keras.preprocessing.image.random_shear,
tf.keras.preprocessing.image.random_zoom
tf.keras.preprocessing.sequence,
tf.keras.preprocessing.text;
train_datagen = keras.preprocessing.image.ImageDataGenerator(
rescale = 1./255,
rotation_range = 40,
width_shift_range = 0.2,
height_shift_range = 0.2,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True,
fill_mode = 'nearest',)
train_generator = train_datagen.flow_from_dataframe(
train_df,
directory = './',
x_col = 'filepath',
y_col = 'class',
classes = class_names,
target_size = (height, width),
batch_size = batch_size,
seed = 7,
shuffle = True,
class_mode = 'sparse',)
train_generator = train_datagen.flow_from_directory(
train_dir,
target_size = (height, width),
batch_size = batch_size,
seed = 7,
shuffle = True,
class_mode = "categorical")
##ImageDataGenerator只定义了对读取出来的图片进行的预处理,但是此时他还不确定是从文件夹还是从dataframe中读取,如果是dataframe中读取,那么dataframe的结构一定是有两个feature_column,并且一个是每一张图片的路径,一个是该图片的所属类别,如下所示:
[(’./cifar10/train/1.png’, ‘frog’),
(’./cifar10/train/2.png’, ‘truck’),
(’./cifar10/train/3.png’, ‘truck’),
(’./cifar10/train/4.png’, ‘deer’),
(’./cifar10/train/5.png’, ‘automobile’)]
[(’./cifar10/test/1.png’, ‘cat’),
(’./cifar10/test/2.png’, ‘cat’),
(’./cifar10/test/3.png’, ‘cat’),
(’./cifar10/test/4.png’, ‘cat’),
(’./cifar10/test/5.png’, ‘cat’)]
17、tf.keras.regularizers;主要是用来实现正则化,正则化就是在目标函数后额外附加一项,使其影响目标函数最优点的选取,可以防止过拟合。主要有以下几个API:
tf.keras.regularizers.l1,tf.keras.regularizers.l2,tf.keras.regularizers.l1_l2,tf.keras.regularizers.L1L2
18、tf.keras.utils:tf.keras.utils.get_file,tf.keras.utils.normalize
十五、tf.nn
下的常用API
和tf.keras下的一些layer、loss很接近,已经写在tf.keras那里了,用作对比
十六、tf.ragged
下的常用API
tf.ragged.constant,tf.ragged.stack,tf.ragged.range;所谓ragged tensor,就是比如二维矩阵,那么它允许每一行可以有不同数量的元素。
十七、tf.random
下的常用API
tf.random.categorical,tf.random.normal,tf.random.gamma,tf.random.shuffle,
tf.random.uniform;用来定义一些随机数,包括正态分布
十八、tf.saved_model
下的常用API
tf.saved_model.save,tf.saved_model.load;用于保存和加载模型,tf.keras.models下面也有
十九、tf.signal
下的常用API(数字信号处理的相关函数)
fft、fft2d、fft3d、ifft、ifft2d、ifft3d;fftshift、ifftshift;hamming_window、hann_window;
irfft、irfft2d、irfft3d、rfft、rfft2d、rfft3d等等
二十、tf.sparse
下的常用API(主要用于处理sparsetensor
)
1、定义sparsetensor:tf.sparse.SparseTensor
tf.sparse.SparseTensor(indices=[[0, 0], [1, 2]], values=[1, 2], dense_shape=[3, 4])
2、操作sparsetensor:to_dense、to_indicator、split、transpose、reshape、maximum、expand_dims、reduce_sum、reduce_max、add、concat等等
二十一、tf.string
下的常用API(主要用于定义和操作字符串)
as_string、bytes_split(按字节划分)、format、join、split、strip、lower、upper、to_number、Substr
二十二、tf.test
下的常用API(主要用于查看GPU相关信息)
tf.test.is_gpu_available、tf.test.gpu_device_name、tf.test.is_built_with_cuda