• Sequential模型、Flatten层、Dense层


    Sequential模型

    顺序模型
    核心操作是添加layers,有两种方法
    第一种:通过add()添加

    model = Sequential()
    model.add(tf.keras.layers.Dense(10,input_shape(1,),activation='relu'))#10表示输出数据的维度,后面表示输入的形状,激活函数为relu
    model.add(tf.keras.layers.Dense(28,input_shape(1,)))
    
    • 1
    • 2
    • 3

    第二种;直接添加

    model = Sequential(tf.keras.layers.Dense(10,input_shape(1,),activation='relu'),tf.keras.layers.Dense(28,input_shape(1,)))
    
    • 1

    选择优化器(如rmsprop或adagrad)并指定损失函数(如categorical_crossentropy)来指定反向传播的计算方法

    model.compile(loss='binary_crossentropy',
                  optimizer='rmsprop')
    
    • 1
    • 2

    调用fit函数将数据提供给模型。这里还可以指定批次大小(batch size)、迭代次数、验证数据集等等。

    model.fit(x_train, y_train, batch_size=32, epochs=10,validation_data=(x_val, y_val))
    
    • 1

    使用evaluate方法来评估模型。

    score = model.evaluate(x_test,y_test,batch_size = 32)
    
    • 1

    Flatten层(展平层)

    用来对数组进行展平操作的
    假设有一张灰度图片,这个图片只有3x3个像素点,分别是从1到9,我们对其进行flatten操作。首先它会把每1行进行分开,然后用第2行接在第1行后面,形成一个新的数组1,2,3,4,5,6,最后再把第3行的7,8,9接在新生成的数组后面形成最终的数组。
    例如:如果是彩色图片的话,它会有3个颜色通道,进行fltten时的步骤也是一样的。
    在这里插入图片描述

    Dense层

    keras.layers.Dense(units, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)
    
    • 1

    参数
    units :代表该层的输出维度或神经元个数, units解释为神经元个数为了方便计算参数量,解释为输出维度为了方便计算维度
    activation=None:激活函数.但是默认 liner (详见API的activation)
    use_bias=True:布尔值,该层是否使用偏置向量b
    kernel_initializer:初始化w权重 (详见API的initializers)
    bias_initializer:初始化b权重 (详见API的initializers)
    kernel_regularizer:施加在权重w上的正则项 (详见API的regularizer)
    bias_regularizer:施加在偏置向量b上的正则项 (详见API的regularizer)
    activity_regularizer:施加在输出上的正则项 (详见API的regularizer)
    kernel_constraint:施加在权重w上的约束项 (详见API的constraints)
    bias_constraint:施加在偏置b上的约束项 (详见API的constraints)

    # 作为 Sequential 模型的第一层,需要指定输入维度。可以为 input_shape=(16,) 或者 input_dim=16,这两者是等价的。
    model = Sequential()
    model.add(Dense(32, input_shape=(16,))) #其输出数组的尺寸为 (*, 32),模型以尺寸(*, 16) 的数组作为输入
    
    # 在第一层之后,就不再需要指定输入的尺寸了:
    model.add(Dense(32))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    input_shape是指输入张量的shape
    input_dim是指的张量的维度
    比如,一个一阶的张量[1,2,3]的shape是(3,),input_dim = 1(因为是一阶)
    一个二阶的张量[[1,2,3],[4,5,6]]的shape是(2,3),input_dim = 2(因为是二阶)
    一个三阶的张量[[[1],[2],[3]],[[4],[5],[6]]]的shape是(2,3,1),input_dim = 3(因为是三阶)

    参考
    https://blog.csdn.net/mogoweb/article/details/82152174
    https://blog.csdn.net/fisherming/article/details/114827976

  • 相关阅读:
    神经网络(neural network)
    009 gtsam/examples/ImuFactorsExample.cpp
    产品经理入门学习(二):产品经理问题思考维度
    【VSCode】Windows 下搭建 C++ 环境
    基于轩禹秒杀ctfshow-RSA
    Vue的模板语法
    web前端期末大作业:JavaScript大作业——福五鼠动漫网页制作(6页)带轮播图效果 学生个人单页面网页作业 学生网页设计成品 静态HTML网页单页制作
    【Python】对中文排序
    基础数据标准落标白皮书
    数字孪生体标准编程
  • 原文地址:https://blog.csdn.net/qq_39667860/article/details/126407250