tensorflow笔记【3】深度学习-鸢尾花分类

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

了解6步法搭建神经网络。


一、六步法搭建神经网路

  1. import相关模块

  2. 告知要喂入神经网络的训练集和测试集是什么?(train,test)
    指定训练集的输入特征x_train和测试集的标签y_train
    指定测试集的输入特征x_test和测试集的标签y_test

    1. 在Sequential()中搭建网络结构,逐层描述每层网络
      走了一遍前向传播
      model = tf.keras.models.Sequential([])
    2. 定义class
      class Mymodel(Model)----------类
      model = Mymodel()--------类创建对象
  3. 在compile()配置训练方法
    告知训练时选择哪种优化器,哪个损失函数,哪种评测指标
    model.compile()

  4. 在fit中执行训练过程
    告知训练集和测试集的输入特征和标签,每个bitch是多少,迭代多少次数据集
    model.fit()

  5. 用summary打印出网络的结构和参数设计
    model.summary(0

二、网络结构

1.Sequential

代码如下:

# 1.导入模块---import
import tensorflow as tf
from sklearn import datasets
import numpy as np

# 2.指定训练集和测试集的特征和标签---(x_train,y_train),(x_test,y_test)
x_train = datasets.load_iris().data
y_train = datasets.load_iris().target

# 3.数据集乱序,使得特征和标签乱序后一一对应---shuffle
np.random.seed(116)
np.random.shuffle(x_train)
np.random.seed(116)
np.random.shuffle(y_train)
np.random.seed(116)

# 4.搭建网络结构模型,逐层的描述每一层网络
# ---Sequential([tf.keras.layers.Dense(神经元个数,激活函数,正则化)])
model = tf.keras.models.Sequential(
    [tf.keras.layers.Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())
     ])

# 5.为网络模型配置训练方法---compile(优化器,损失函数,评测指标)
model.compile(optimizer=tf.keras.optimizers.SGD(learning_rate=0.1),
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
              metrics=['sparse_categorical_accuracy']
)

# 6.训练网络---fit(训练集的特征,标签,batch_size=,epochs=,validation_split,validation_freq=)
model.fit(x_train, y_train, batch_size=12, epochs=500,
          validation_split=0.2,
          validation_freq=20,
         )

# 7.打印出网络结构和参数---summary()
model.summary()

2.class

# 1.导入相关模块---import
import tensorflow as tf
from keras.layers import Dense
from keras import Model
from sklearn import datasets
import numpy as np

# 2.指定训练集和测试集的输入特征和标签---(x_train,y_train),(x_test,y_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)
np.random.seed(116)

# 3.搭建神经网络结构---class(全连接层:神经元个数,激活函数,正则化)
class IrisModel(Model):
    def __init__(self):
        super(IrisModel, self).__init__()
        self.d1 = Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())

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

# 4.为网络模型配置训练方法---compile(优化器,损失函数,评测指标)
model.compile(optimizer=tf.keras.optimizers.SGD(learning_rate=0.1),
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
              metrics=['sparse_categorical_accuracy'])

# 5.传入测试集训练网络模型---fit
# (测试集特征,标签,batch_size=,epochs=,validation_spilt=,validation_freq=)
model.fit(x_train, y_train, batch_size=12, epochs=500,
          validation_split=0.2,
          validation_freq=20)

# 6.打印网络结构和参数---summary
model.summary()

总结

1.Sequential可以快速搭建网络,上层输出就是下层输入的顺序网络结构
2.如果网络包含跳连等复杂网络结构,Sequential无法表示,需要class来声明网络结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值