Tensorflow入门

计算机视觉和图像处理

  1. Tensorflow入门
  2. 深度神经网络
  3. 图像分类
  4. 目标检测
  5. 图像分割
  6. OpenCV
  7. Pytorch
  8. NLP自然语言处理

一、深度学习框架—TensorFlow

1.1 TensorFlow介绍

TensorFlow 是一个非常强大且流行的开源机器学习框架,可以让开发者轻松构建和部署各种类型的机器学习模型,包括但不限于深度学习模型。

TensorFlow 的主要组件

  • Tensor:TensorFlow 中的基本数据结构,是一个多维数组,可以用来表示数据。
  • Graph:TensorFlow 1.x 中使用的一种数据流图,用于描述计算过程。
  • Session:TensorFlow 1.x 中用于执行 Graph 中的计算。
  • Eager Execution:TensorFlow 2.x 引入的一种即时执行模式,允许开发者以更直观的方式编写和调试代码。
  • Keras:一个高级神经网络 API,自 TensorFlow 2.0 开始集成到 TensorFlow 中,提供了易于使用的接口来构建和训练模型。

1.2 安装TensorFlow

  1. 创建虚拟环境
    在Anaconda终端中创建虚拟环境tf_env
conda create --name tf_env

在这里插入图片描述

  1. 激活虚拟环境
conda activate tf_env

在这里插入图片描述

  1. 安装TensorFlow
pip install tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple

在这里插入图片描述

  1. 查看是否安装成功
import tensorflow as tf
rf._version_

在这里插入图片描述

1.3 张量及其操作

1.3.1 张量Tensor

张量是⼀个多维数组。 与NumPy ndarray对象类似

import tensorflow as tf
import numpy as np
  1. 创建张量
# 创建0维张量,即标量(数字)
tf.constant(3)

在这里插入图片描述

# 创建一维张量
tf.constant([1.0, 2.0, 3.0])

在这里插入图片描述

# 创建二维张量
tf.constant([[1,2],[3,4],[5,6]],dtype=tf.float16)

在这里插入图片描述

# 创建三维张量
tf.constant([[[1,2,3,4,5],[6,7,8,9,10]],[[11,12,13,14,15],[16,17,18,19,20]],[[21,22,23,24,25],[26,27,28,29,30]]])

在这里插入图片描述

  1. 转换为numpy
tensor1 = tf.constant([1,2,3,4,5])
tensor1.numpy()

在这里插入图片描述

np.array(tensor1)

在这里插入图片描述

  1. 常用函数
a = tf.constant([[1,2],[3,4]])
b = tf.constant([[1,1],[1,1]])
# 加法
tf.add(a,b)

在这里插入图片描述

# 元素相乘
tf.multiply(a,b)

在这里插入图片描述

# 矩阵乘法
tf.matmul(a,b)

在这里插入图片描述

# 最大值
tf.reduce_max(a)

在这里插入图片描述

# 最大索引
tf.argmax(a)

在这里插入图片描述

# 平均值
tf.reduce_mean(a)

在这里插入图片描述

  1. 变量
var = tf.Variable([[1,2],[3,4]])
var

在这里插入图片描述

var.shape

在这里插入图片描述

var.dtype

在这里插入图片描述

var.numpy()

在这里插入图片描述

# 变量形状不可以改变,可以改变其中参数
var.assign([[6,7],[8,9]])

在这里插入图片描述

1.4 tf.keras介绍

tf.keras TensorFlow 提供的一个高级 API,用于构建和训练深度学习模型。它旨在提供一个用户友好、模块化且易于扩展的接口,以便开发人员能够轻松地设计和训练复杂的神经网络模型。tf.keras 兼容 TensorFlow 2.x,并且可以无缝地与其他 TensorFlow 功能集成。

1.4.1 tf.keras 的主要组件

  1. 模型
    Sequential:这是一个线性堆叠层的模型,适合简单的前馈网络。
    Functional API:这是一种更灵活的方法,允许创建具有任意拓扑结构的模型,包括多输入/多输出模型、共享层模型等。
    Subclassing:这是一种通过继承 tf.keras.Model 类来定义模型的方法,适用于更复杂的情况,例如循环网络或需要自定义训练循环的情况。

  2. Dense:全连接层,是最常用的层之一。
    Convolutional Layers:卷积层,用于处理图像和其他二维数据。
    Pooling Layers:池化层,用于降低数据的空间维度。
    Recurrent Layers:循环层,如 LSTM 和 GRU,用于处理序列数据。
    Normalization Layers:归一化层,如 Batch Normalization,用于加速训练过程。
    Dropout Layer:用于防止过拟合的层。
  3. 优化器
    Adam:一种自适应学习率优化算法,广泛用于深度学习。
    SGD:随机梯度下降优化器,适用于各种情况。
    RMSprop:另一种自适应学习率优化器,适用于训练 RNNs 和其他模型。
  4. 损失函数
    Mean Squared Error (MSE):均方误差,用于回归任务。
    Categorical Crossentropy:多类别分类任务中常用的损失函数。
    Binary Crossentropy:二分类任务中常用的损失函数。
  5. 指标
    Accuracy:分类任务中最常用的指标之一。
    Precision:精确率,用于评估模型预测正例的能力。
    Recall:召回率,用于评估模型识别所有正例的能力。

1.4.2 tf.keras使用

  1. 使⽤tf.keras进⾏分类时的主要流程:数据处理-构建模型-模型训练-模型验证
  2. tf.keras中构建模型可通过squential()来实现并利⽤.fit()⽅法进⾏训练
  3. 使⽤evaluate()⽅法计算损失函数和准确率

详见快速入门模型 2.4

二、快速入门模型(iris)

2.1 导入相关库

# 导入相关库
import seaborn as sns
import numpy as np
import pandas as pd
# 机器学习sklearn
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegressionCV
# 深度学习tf.keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras import utils

2.2 数据处理

# 加载数据
iris = pd.read_csv('iris_data.csv')
iris.head()

在这里插入图片描述

# 数据展示
sns.pairplot(iris.drop("label",axis=1),hue='target')

在这里插入图片描述

# 获取数据集的特征值和目标值
# values返回 DataFrame 中的数据作为 NumPy 数组
x = iris.values[:,0:4]
y = iris.values[:,4]
#数据划分
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.4,random_state=2)

2.3 sklearn实现鸢尾花

# 使用逻辑回归
lr = LogisticRegressionCV()
lr.fit(x_train,y_train)

在这里插入图片描述

# 模型评估
lr.score(x_test,y_test)

在这里插入图片描述

2.4 tf.keras的实现

2.4.1 数据处理

# 目标值进行热编码
def one_hot_encode(arr):
    # 获取目标值中的所有类别并进行热编码
    # return_inverse返回arr每个原始数组元素在uniques唯一值数组中的索引位置,即ids
    uniques,ids = np.unique(arr,return_inverse=True)
    # to_categorical将整数数组dis转换为二进制(即 One-Hot)表示。
    return utils.to_categorical(ids,len(uniques))
# 对训练集进行热编码
y_train_one = one_hot_encode(y_train)
y_train_one

在这里插入图片描述

# 对测试集进行热编码
y_test_one = one_hot_encode(y_test)

2.4.2 模型构建

# 通过sequential进行构建
model = Sequential([
    # 隐藏层,激活函数relu
    Dense(10,activation="relu",input_shape=(4,)),
    # 隐藏层
    Dense(10,activation="relu"),
    # 输出层
    Dense(3,activation="softmax")
])
# 查看模型的架构
model.summary()

在这里插入图片描述

# 查看模型的架构
utils.plot_model(model,show_shapes=True)

在这里插入图片描述

2.4.3 模型训练与预测

# 模型编译
# optimaizer优化策略,loss损失函数,metrics评估指标
model.compile(optimizer="adam",loss="categorical_crossentropy",metrics=["accuracy"])
# 类型转换
x_train = np.array(x_train,dtype=np.float32)
x_test = np.array(x_test,dtype=np.float32)
# 模型训练
# epochs训练轮次,batch_size每次更新权重所使用的样本数量为1,verbose训练过程的显示模式
model.fit(x_train,y_train_one,epochs=10,batch_size=1,verbose=1)

在这里插入图片描述

# 模型评估
loss,accuracy = model.evaluate(x_test,y_test_one,verbose=1)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱敲代码的小崔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值