TensorFlow学习之路(三)

TensorFlow模型类

TensorFlow模型类:Model类

初始化参数 
___init_ __(self)//定义
call(self,input)	  //组装

类中包含方法:
summary:展示模型的基本情况
compile:编译时定义的优化器常常数之类的东西
fit:训练模型
save:保存模型到磁盘中
evaluate:评估模型

TensorFlow模型类:Sequential类

Sequential继承于Model
初始化参数只有一个就layout层参数

TensorFlow逐层构造LeNet模型

  1. LeNet第一层:TensorFlow卷积类
    初始化参数
    filters 卷积核个数
    kernel_size 卷积核大小
    strides=(1,1) 步长
    padding=‘valid’ 其他可选项 valid舍弃,same补齐
    data_fotmat=None 默认channels_last
    activation=tf.nn.relu 激活函数
    input_shape=(32,32,1) 输入格式

    卷积层编码

    tf.keras.layers.Conv2D(filters=6,kernel_size=(5,5),padding='valid',activation=tf.nn.relu,input_shape=(32,32,1))
    
  2. LeNet第二层:TensorFlow池化类
    初始化参数
    pool_size 池化大小
    strides=(1,1) 步幅
    padding=‘vaild’ 其他可选项 valid舍弃,same补齐
    data_format=None 默认channels_last
    ————————————————————
    池化层类编码

    tf.keras.layers.AveragePooling2D(pool_size=(2,2),strides=(2,2),padding='same')
    
  3. LeNet第三、四层:TensorFlow卷积层+池化层编码

    第三第四层的卷积层和池化层的编码和第一第二层的编码是一样的,但是第三层的卷积层的卷积核filters为16

    tf.keras.layers.Conv2D(filters=16,kernel_size=(5,5),padding='valid',activation=tf.nn.relu,input_shape=(32,32,1))
    tf.keras.layers.AveragePooling2D(pool_size=(2,2),strides=(2,2),padding='same')
    
  4. 附加、TensorFlow扁平化类
    在第三第四层之后会有一个扁平化类

    tf.keras.layers.Flatten()
    
  5. LeNet第五、六、七层:TensorFlow全连接层
    初始化参数
    units 输出维数
    activation 激活函数
    strides=(1,1) 步长
    padding=‘vaild’ 其他可选项 valid舍弃,same补齐
    data_format=None 默认channels_last
    编码

    tf.keras.layers.Dense(units=120,activation=tf.nn.relu)
    tf.keras.layers.Dense(units=84,activation=tf.nn.relu)
    tf.keras.layers.Dense(units=10,activation=tf.nn.softmax)
    

    不同的是他们输出的维数是不同的,最后一个激活函数是输出最大的

到此为止LeNet模型已经构造好了

最后附上全部的模型构造代码

mode=tf.keras.models.Sequential([tf.keras.layers.Conv2D(filters=6,kernel_size=(5,5),padding='valid',activation=tf.nn.relu,input_shape=(32,32,1))
,tf.keras.layers.AveragePooling2D(pool_size=(2,2),strides=(2,2),padding='same')
,tf.keras.layers.Conv2D(filters=16,kernel_size=(5,5),padding='valid',activation=tf.nn.relu,input_shape=(32,32,1))
,tf.keras.layers.AveragePooling2D(pool_size=(2,2),strides=(2,2),padding='same')
,tf.keras.layers.Flatten()
,tf.keras.layers.Dense(units=120,activation=tf.nn.relu)
,tf.keras.layers.Dense(units=84,activation=tf.nn.relu)
,tf.keras.layers.Dense(units=84,activation=tf.nn.softmax)])

这里就构造好了一个Mode类型的模型啦

猜你喜欢

转载自blog.csdn.net/AcStudio/article/details/104879575