tensorflow2.x学习笔记二十九:官方API文档小总结

一、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

猜你喜欢

转载自blog.csdn.net/qq_39507748/article/details/110769378
今日推荐