Tensorflow2(3)

搭建网络八股

六步法

import-导入所需模块
train,test-输入训练集和测试集
model=tf.keras.models.Sequential-搭建网络
model.compile-选择优化器,评价指标,损失函数
model.fit-输入特征和标签,batch,epoch
model.summary-网络结构和参数统计

model=tf.keras.models.Sequential([网络结构])#描述各层网络

拉直层:tf.keras.layers.Flatten()
全连接层:tf.keras.Dense(神经元个数,activateion=“激活函数”,kernal_regularizer=哪种正则化)
卷积层:tf.keras.layers.Conv2D(filters=卷积核个数,kernel_size=卷积核尺寸,strides=卷积步长,padding=“valid"or"same”)
LSTM层:tf.keras.layers.LSTM()

model.compile(optimizer=优化器,loss=损失函数,metrics=[“准确率”])

Optimizer可选:
‘sgd’ or tf.keras.optimizers.SGD(lr=学习率,momentum=动量参数)
‘adagrad’ or tf.keras.optimizers.Adgrad(lr=学习率)
‘adadelta’ or tf.keras.optimizers.Adadelta(lr=学习率)
‘adam’ or tf.keras.optimisers.Adam(lr=学习率,beta_1=0.9,beta_2=0.999)
loss可选:
‘mes’ or tf.keras.losses.MeanSequaredError()
‘sparse_categorical_crossentropy’ or tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False(是否是原始输出(softmax)))
Metrics可选:
‘accuracy’:y_和y都是数值
‘categorical_accuracy’:y_和y都是独热码(概率分布)
‘sparse_categorical_accuracy’:y_是数值,y是独热码(概率分布)

model.fit(训练集的输入特征,训练集的标签,batch_size=,epochs=,validation_data=(测试集的输入特征,测试集的标签),validation_freq=多少次epoch测试一次)

model.summary()

打印出网络的结构和参数统计

#import
import tensorflow as tf
from sklearn import datasets
import numpy as np
#train test
x_train=datasets.load_iris().data
y_train=datasets.load_iris().target
np.random.seed(116)
np.random.shuffle(x_train)
np.random.seed(116)
np.random.shuffle(y_train)
tf.random.set_seed(116)
#model.Sequential
model=tf.keras.models.Sequential(tf.keras.layers.Dense(3,activation='softmax',kernel_regularizer=tf.keras.regularizers.l2()))
#model。compile
model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),metrics=['sparse_categorical_accuracy'])
#model.fit
model.fit(x_train,y_train,batch_size=32,epochs=500,validation_split=0.2,validation_freq=20)#validation_split将训练集分为训练集和测试集比例
#model.summary
model.summary()

搭建网络八股class

六步法

import-导入所需模块
train,test-输入训练集和测试集
class MyModel(Model) model=MyModel(带有跳连的非顺序网络结构,跳连就是上层输出可能是下几层部分输入)
model.compile-选择优化器,评价指标,损失函数
model.fit-输入特征和标签,batch,epoch
model.summary-网络结构和参数统计

class MyModel(Model) model=MyModel

class MyModel(Model):#类的继承,让子类(MyModel)拥有父类(Model)的属性(变量)和方法(函数)
def init(self):
super(MyModel,self).init()
定义网络结构块
def call(self,x):
调用网络结构块,实现前向传播
return y
model=MyModel

import tensorflow as tf
from tensorflow.keras.layers import Dense
from tensorflow.keras import Model
from sklearn import datasets
import numpy as np

x_train = datasets.load_iris().data
y_train = datasets.load_iris().target

np.random.seed(116)
np.random.shuffle(x_train)
np.random.seed(116)
np.random.shuffle(y_train)
tf.random.set_seed(116)

class IrisModel(Model):#Model=tf.keras.Model
    def __init__(self):
        super(IrisModel, self).__init__()
        self.d1 = Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())#Dense=tf.keras.layers.Dense

    def call(self, x):
        y = self.d1(x)
        return y

model = IrisModel()

model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
              metrics=['sparse_categorical_accuracy'])

model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)
model.summary()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值