TensorFlow keras卷积神经网络 添加L2正则化

model = keras.models.Sequential([
        #卷积层1
        keras.layers.Conv2D(32,kernel_size=5,strides=1,padding="same",data_format="channels_last",activation=tf.nn.relu,kernel_regularizer=keras.regularizers.l2(0.01)),
        #池化层1
        keras.layers.MaxPool2D(pool_size=2,strides=2,padding="same"),
        #卷积层2
        keras.layers.Conv2D(64,kernel_size=5,strides=1,padding="same",data_format="channels_last",activation=tf.nn.relu),
        #池化层2
        keras.layers.MaxPool2D(pool_size=2,strides=2,padding="same"),
        #数据整理
        keras.layers.Flatten(),
        #1024个,全连接层
        keras.layers.Dense(1024,activation=tf.nn.relu),
        #100个,全连接层
        keras.layers.Dense(100,activation=tf.nn.softmax)
    ])

  

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

from tensorflow.python.keras.datasets import cifar100
from tensorflow.python import keras
import tensorflow as tf


class CNNMnist(object):

    model = keras.models.Sequential([
        #卷积层1
        keras.layers.Conv2D(32,kernel_size=5,strides=1,padding="same",data_format="channels_last",activation=tf.nn.relu,kernel_regularizer=keras.regularizers.l2(0.01)),
        #池化层1
        keras.layers.MaxPool2D(pool_size=2,strides=2,padding="same"),
        #卷积层2
        keras.layers.Conv2D(64,kernel_size=5,strides=1,padding="same",data_format="channels_last",activation=tf.nn.relu),
        #池化层2
        keras.layers.MaxPool2D(pool_size=2,strides=2,padding="same"),
        #数据整理
        keras.layers.Flatten(),
        #1024个,全连接层
        keras.layers.Dense(1024,activation=tf.nn.relu),
        #100个,全连接层
        keras.layers.Dense(100,activation=tf.nn.softmax)
    ])

    def __init__(self):
        (self.x_train,self.y_train),(self.x_test,self.y_test) = cifar100.load_data()

        self.x_train = self.x_train/255.0
        self.x_test = self.x_test/255.0


    def compile(self):
        CNNMnist.model.compile(optimizer=keras.optimizers.Adam(),loss=keras.losses.sparse_categorical_crossentropy,metrics=["accuracy"])

    def fit(self):
        CNNMnist.model.fit(self.x_train,self.y_train,epochs=1,batch_size=32)

    def evaluate(self):
        test_loss,test_acc = CNNMnist.model.evaluate(self.x_test,self.y_test)
        print(test_loss,test_acc)

if __name__ == '__main__':
    cnn = CNNMnist()
    print(CNNMnist.model.summary())
    cnn.compile()
    cnn.fit()

  

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
TensorFlow中,可以通过添加正则化方式来对神经网络进行正则化。正则化的目的是通过限制权重的大小,来防止模型过拟合训练数据中的随机噪音。TensorFlow提供了L1正则化和L2正则化两种方式。 L1正则化会使得部分参数变得稀疏,即将一些参数调整为0,相当于进行了特征选择的功能。而L2正则化不会产生稀疏性,当参数很小的时候,参数的平方可以忽略,不会进一步将参数调整为0。另外,L1正则化的计算公式不可导,而L2正则化可导,这对于优化模型时计算损失函数的偏导数是有帮助的。 在实际应用中,也可以同时使用L1正则化和L2正则化,将它们进行组合。通过在计算图中保存一组实体,TensorFlow提供了集合的方式来解决正则化在复杂神经网络中计算损失函数的复杂性和可读性问题。 因此,在TensorFlow中,可以使用L1正则化和L2正则化来对神经网络进行正则化,以防止过拟合的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [TensorFlow keras神经网络 添加L2正则化方式](https://download.csdn.net/download/weixin_38681736/12851829)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [TensorFlow优化模型之正则化](https://blog.csdn.net/sinat_29957455/article/details/78397601)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值