深度学习TensorFlow学习

本文介绍了如何利用TensorFlow2的tf.keras模块快速构建神经网络模型。首先,通过导入必要的库,然后使用Sequential模型或者自定义Model来定义网络结构,包括常见的全连接层(Dense)、卷积层(Conv2D)、LSTM层等。接着,配置模型的编译步骤,选择优化器(如SGD、Adam等)、损失函数(如MSE、SparseCategoricalCrossentropy)和评估指标。最后,使用fit函数进行模型训练,并通过summary查看模型结构和参数。文中还给出了一个使用Iris数据集的完整示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

神经网络搭建

一、Keras

tf.keras 是 tensorflow2 引入的高封装度的框架, 可以用于快速搭建神经网络模型, keras 为支持快速实验而生,能够把想法迅速转换为结果, 是深度学习框架之中最终易上手的一个,它提供了一致而简洁的 API,能够极大地减少一般应用下的工作量,提高代码地封装程度和复用性

  1. import——导入所需的各种库和包
  2. x_train, y_train——导入数据集、 自制数据集、数据增强
  3. model=tf.keras.models.Sequential/class MyModel(Model)
    model=MyModel——定义模型
  4. model.compile——配置模型
  5. model.fit——训练模型、 断点续训
  6. model.summary

1. 导入tf.keras

import tensorflow as tf
from tensorflow import keras

2. 搭建模型

—tf.keras.models.Sequential()

Sequential 函数是一个容器, 描述了神经网络的网络结构,在 Sequential
函数的输入参数中描述从输入层到输出层的网络结构。

model = tf.keras.models.Sequential()

如:
拉直层: tf.keras.layers.Flatten()拉直层可以变换张量的尺寸,把输入特征拉直为一维数组,是不含计算参数的层。
全连接层: tf.keras.layers.Dense( 神经元个数, activation=”激活函数”,kernel_regularizer=”正则化方式”)
其中:

  • activation(字符串给出)可选 relu、 softmax、 sigmoid、 tanh 等

  • kernel_regularizer 可选 tf.keras.regularizers.l1()、tf.keras.regularizers.l2()

卷积层: tf.keras.layers.Conv2D( filter = 卷积核个数,kernel_size = 卷积核尺寸,strides = 卷积步长,padding = “valid” or “same”)
LSTM 层: tf.keras.layers.LSTM()。

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

Compile 用于配置神经网络的训练方法,告知训练时使用的优化器、损失函数和准确率评测标准。
其中:
optimizer 可以是字符串形式给出的优化器名字,也可以是函数形式,使用函数形式可以设置学习率、动量和超参数。
可选项包括:

  • ‘sgd’or tf.optimizers.SGD( lr=学习率,decay=学习率衰减率,momentum=动量参数)
  • ‘adagrad’or tf.keras.optimizers.Adagrad(lr=学习率,decay=学习率衰减率)
  • ‘adadelta’or tf.keras.optimizers.Adadelta(lr=学习率,decay=学习率衰减率)
  • ‘adam’or tf.keras.optimizers.Adam (lr=学习率,decay=学习率衰减率)

Loss 可以是字符串形式给出的损失函数的名字,也可以是函数形式。
可选项包括:

  • ‘mse’or tf.keras.losses.MeanSquaredError()
  • ‘sparse_categorical_crossentropy or tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)

损失函数常需要经过 softmax 等函数将输出转化为概率分布的形式。from_logits 则用来标注该损失函数是否需要转换为概率的形式, 取 False 时表示转化为概率分布,取 True 时表示没有转化为概率分布,直接输出。
Metrics 标注网络评测指标。
可选项包括:

  • ‘accuracy’: y_和 y 都是数值,如 y_=[1] y=[1]。
  • ‘categorical_accuracy’: y_和 y 都是以独热码和概率分布表示。如 y_=[0, 1, 0], y=[0.256, 0.695, 0.048]。
  • ‘sparse_ categorical_accuracy’: y_是以数值形式给出, y 是以独热码形式
    给出。如 y_=[1],y=[0.256, 0.695, 0.048]。
—model.fit(训练集的输入特征, 训练集的标签, batch_size, epochs,validation_data = (测试集的输入特征,测试集的标签),validataion_split = 从测试集划分多少比例给训练集,validation_freq = 测试的 epoch 间隔次数)

fit 函数用于执行训练过程。

—model.summary()

summary 函数用于打印网络结构和参数统计

二、举例

#导入包
import tensorflow as tf
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)

#搭建模型
model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())
])

#from_logits=False这里为false因为Sequential层的激活函数为softmax,是处理后的数据,并不是源数据
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()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值