ML学习笔记(一)

MNIST tensorflow 实现

模型说明

model = tf.keras.Sequential(
    [
        tf.keras.layers.Flatten(input_shape=(28,28)),
        tf.keras.layers.Dense(128,activation='relu'),
        tf.keras.layers.Dropout(0.55),
        tf.keras.layers.Dense(10,activation='softmax')
    ]
)

模型由tf.keras的api实现

tf.keras.layers.Flatten : 将二维的输入一维化

tf.keras.layers.Dense : 对原矩阵进行变换,通过矩阵变化得到矩阵形状

tf.keras.layers.dropout: 防止网络过拟合

正常训练
  • epoch设置为5
  • optimizer 为adam
  • loss函数 为 sparse_categorical_crossentropy
  • metrics accuracy

准确率为 97.2%左右

  1. 将激活函数改为 sigmoid 后,准确率下降为96.2%左右

    将训练数据减少到5000组,进行相同次数的训练。relu仍能达到92%左右,sigmoid只有90%

    符合sigmoid函数收敛缓慢的特点

    将训练次数增多,sigmoid和relu都能达到近似97%的正确率

  2. 将Dense层中的输出维度进行修改以下为修改后数据与其相应结果

    为了让效果更明显,减少训练的次数

    Dense维度结果
    12892.21%
    102494.37%
    3290.07%

    Dense层维度的增大可以提高模型的准确率,但是会降低其训练速度

  3. 修改Dropout

    Dropout结果
    094.96%
    0.195.23%
    0.594.63%
    0.993.80%
    0.9972.39%

    dropout是为了提高模型的泛化能力,因为MNIST的测试集和训练集较为特殊,dropout不需要太高

  4. 修改optimizer

    optimizer结果
    adam98.04%
    sgd94.41%
    nadam97.97%
    adamax97.61%

    但是nadam明显慢于其余三个优化器

5.增加Dense层

Dense层数每层的维度结果
2(512,128)98.00%
2(512,512)98.11%
2(128,512)97.53%
3(512,512,512)98.00%

fashion_mnist

fashion_mnist 也能用上述模型去拟合数据,只是需要再添加Dense层,提高Epoch到50-100之间,我设置Epoch=100后居然准确率能达到100%,真的是很神奇

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值