AI——神经网络以及TensorFlow使用

文章目录

  • 一、TensorFlow安装
  • 二、张量、变量及其操作
    • 1、张量Tensor
    • 2、变量
  • 三、tf.keras介绍
    • 1、使用tf.keras构建我们的模型
    • 2、激活函数
      • 1、sigmoid/logistics函数
      • 2、tanh函数
      • 3、RELU函数
      • 4、LeakReLu
      • 5、SoftMax
      • 6、如何选择激活函数
    • 3、参数初始化
      • 1、bias偏置初始化
      • 2、weight权重初始化
        • 1、随机初始化
        • 2、标准初始化
        • 3、Xavier初始化
        • 4、He初始化
    • 4、神经网络构建
      • 1、通过Sequential构建
      • 2、function api方式构建
      • 3、Model子类构建方式
    • 5、神经网络的优缺点

一、TensorFlow安装

# 1、非GPU版本安装
pip3 install tensorflow==2.3.0# 2、GPU版本安装
pip3 install tensorflow-gpu==2.3.0

二、张量、变量及其操作

1、张量Tensor

在这里插入图片描述

import tensorflow as tf
import numpy as np# 创建基础的张量
## 1.创建int32类型的0维张量,即标量
rank_0_tensor = tf.constant(4)
print(rank_0_tensor)## 2.创建float32类型的1维张量
rank_1_tensor = tf.constant([2.0, 3.0, 4.0])
print(rank_1_tensor)## 3.创建float16类型的二维张量
rank_2_tensor = tf.constant([[1, 2],[3, 4],[5, 6]
], dtype=tf.float16)
print(rank_2_tensor)## 4.将张量转化为ndarray
np1 = np.array(rank_2_tensor)
print(np1)np2 = rank_2_tensor.numpy
print(np2)# 张量常用函数
a = tf.constant([[1, 2],[3, 4]
])
b = tf.constant([[1, 1],[1, 1]
])
print(tf.add(a, b)) # 计算张量元素的和
print(tf.multiply(a, b)) # 计算张量元素的乘积
print(tf.matmul(a, b)) # 计算张量矩阵的乘法# 聚合运算
c = tf.constant([[4.0, 5.0],[10.0, 1.0]
])
print(tf.reduce_max(c)) # 最大值
print(tf.reduce_mean(c)) # 平均值
print(tf.reduce_sum(c)) # 求和
print(tf.reduce_min(c)) # 最小值
print(tf.argmax(c)) # 最大值索引
print(tf.argmin(c)) # 最小值索引

2、变量

在这里插入图片描述

# 变量
var = tf.Variable([[1, 2],[3, 4]
])
print(var.shape) # 获取变量的形状
print(var.dtype) # 获取变量中数据类型
print(var.numpy) # 转化为ndarray
print(var.assign([[5, 6], [7, 8]])) # 修改变量值

三、tf.keras介绍

在这里插入图片描述

1、使用tf.keras构建我们的模型

# 绘图工具
import seaborn as sns
# 数组计算
import numpy as np
# sklearn相关工具
from sklearn.datasets import load_iris
# 划分测试集和训练集
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, MinMaxScaler
# 逻辑回归
from sklearn.linear_model import LogisticRegressionCV
# tf.keras中使用的相关工具
# 用于模型搭建
from tensorflow.keras.models import Sequential
# 构建模型的层和激活工具
from tensorflow.keras.layers import Dense, Activation
# 数据处理的辅助工具
from tensorflow.keras import utils
# pandas工具,让数据更好看
import pandas as pd# 1.使用sklearn获取鸢尾花数据
iris = load_iris()
iris_d = pd.DataFrame(data=iris.data, columns=['sepal_length', 'sepal_width', 'petal_length', 'petal_width'])
# 设置其目标值为target_names
iris_d['species'] = iris['target_names'][iris['target']]
# 使用seaborn中的pairplot函数探索数据特征间的关系
sns.pairplot(iris_d, hue="species")# 使用sklearn实现# 所有的特征值
x = iris_d.values[:, :4]# 所有的目标值
y = iris_d.values[:, 4]# 利用train_test_split完成数据集划分,测试集20%,训练集80%
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=0)# 特征预处理
# transfer = StandardScaler()
transfer = MinMaxScaler((0, 1))
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)## 模型调优 - 交叉验证、网格搜索
# 实例化估计器,CV这个估计器已经调过优了
lr = LogisticRegressionCV()
# 模型训练
lr.fit(x_train, y_train)
# 模型评估
lr.score(x_test, y_test)# 使用tf.keras实现
# 1.生成目标值的热编码
def one_hot_encode(arr):# 获取目标值中的所有类别进行热编码uniques, ids = np.unique(arr, return_inverse=True)return utils.to_categorical(ids, len(uniques))# 2.对目标值进行热编码
y_train_one = one_hot_encode(y_train)
y_test_one = one_hot_encode(y_test)# 3.模型构建
model = Sequential([# 隐藏层,输入层,input_shape表示我们有几个特征Dense(10, activation="relu", input_shape=(4,)),# 隐藏层Dense(10, activation="relu"),# 输出层,3表示我们有几种结果Dense(3, activation="softmax")
])# 4.模型预测与评估
## 4.1 模型编译
model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"])## 4.2 模型训练
# 类型转换
x_train = np.array(x_train, dtype=np.float32)
x_test = np.array(x_test, dtype=np.float32)
model.fit(x_train, y_train_one, epochs=10, batch_size=1, verbose=1)## 4.3模型评估
loss, accuracy = model.evaluate(x_test, y_test_one, verbose=1)
print("loss: ", loss)
print("准确率:", accuracy)

2、激活函数

1、sigmoid/logistics函数

在这里插入图片描述
在这里插入图片描述
一般只用于输出层的二分类

2、tanh函数

在这里插入图片描述
在这里插入图片描述

3、RELU函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
无脑使用RELU

4、LeakReLu

在这里插入图片描述

5、SoftMax

softmax用于多分类过程中,它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展示出来。
在这里插入图片描述

6、如何选择激活函数

在这里插入图片描述

3、参数初始化

1、bias偏置初始化

直接初始化为0

2、weight权重初始化

1、随机初始化

随机初始化从均值为0,标准差是1的高斯分布中取样,使用一些很小的值对参数w进行初始化

2、标准初始化

权重参数初始化从区间均匀随机取值,即在(-1/根号d/,根号d/1)均匀分布中生成当前神经元的权重,其中d为每个神经元的输入数量

3、Xavier初始化

该方法的基本思想是各层的激活值和梯度的方差在传播过程中保持一致,也叫做Glorot初始化,在tf.keras中实现方法有两种:

  • 正态化Xavier初始化
    在这里插入图片描述
  • 标准化Xavier初始化
    在这里插入图片描述
4、He初始化

he初始化,也称为Kaiming初始化,他的基本思想是正向传播时,激活值的方差保持不变;反向传播时,关于状态值的梯度的方差保持不变

  • 正太化的he初始化
    在这里插入图片描述
  • 标准化的he初始化
    在这里插入图片描述

4、神经网络构建

1、通过Sequential构建

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers# 定义一个Sequential模型,包含3层
model = keras.Sequential([# 第一层:激活函数为relu,权重初始化为he_normallayers.Dense(3, activation="relu", kernel_initializer="he_normal", name="layer1", input_shape=(3, )),# 第二层:激活函数为relu,权重初始化为he_normallayers.Dense(2, activation="relu", kernel_initializer="he_normal", name="layer2"),# 第三次:激活函数为sigmoid,权重初始化和he_normallayers.Dense(2, activation="sigmoid", kernel_initializer="he_normal", name="layer3")
])model.summary()

2、function api方式构建

在这里插入图片描述

# 使用function api方式构建神经网络
import tensorflow as tf
# 定义模型的输入
inputs = tf.keras.Input(shape=(3,), name = 'input')
# 第一层:激活函数为relu,其他默认
x = tf.keras.layers.Dense(3, activation='relu', name='layer1')(inputs)
# 第二层:激活函数为relu,其他默认
x = tf.keras.layers.Dense(2, activation='relu', name='layer2')(x)
# 第三次:输出层,激活函数为sigmoid
outputs = tf.keras.layers.Dense(2, activation='sigmoid', name='layer3')(x)
# 使用Model创建模型
model = tf.keras.Model(inputs = inputs, outputs=outputs, name='my_model')
model.summary()

3、Model子类构建方式

# 使用Model子类的方式构建神经网络
import tensorflow as tfclass MyModel(tf.keras.Model):# 在init方法中定义网络的层结构def __init__(self):super(MyModel, self).__init__()# 第一层:激活函数为relu,权重初始化为he_normalself.layer1 = tf.keras.layers.Dense(3, activation='relu', kernel_initializer='he_normal', name='layer1', input_shape=(3,))# 第二层:激活函数为relu,权重初始化为he_normalself.layer2 = tf.keras.layers.Dense(2, activation='relu', kernel_initializer='he_normal', name='layer2')# 第三次:激活函数为sigmoid,权重初始化为he_normalself.layer3 = tf.keras.layers.Dense(2, activation='sigmoid', kernel_initializer='he_normal', name='layer3')# 在call方法中完成前向传播def call(self, inputs):x = self.layer1(inputs)x = self.layer2(x)return self.layer3(x)# 实例化model
model = MyModel()
# 设置一个输入调用模型(否则无法使用summary方法)
x = tf.ones((1, 3))
y = model(x)
model.summary()

5、神经网络的优缺点

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/902555.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes (k8s) 日常运维命令总结

一、资源查看 查看所有命名空间的 Pod kubectl get pod --all-namespaces查看指定命名空间的 Pod kubectl get pod --namespace <命名空间>查看所有部署&#xff08;Deployments&#xff09; kubectl get deployments.apps --all-namespaces查看所有守护进程集&#xff0…

【PostgreSQL教程】PostgreSQL 特别篇之 语言接口连接Perl

博主介绍:✌全网粉丝22W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。 感兴趣的可…

07-IDEA企业开发工具-开发入门程序

1. IDEA创建Java项目的代码结构 项目结构: IDEA中的Java项目包含四种主要结构&#xff1a;工程(Project)、模块(Module)、包(Package)、类(Class)。 工程(Project): 代表整个项目&#xff0c;通常是一个磁盘目录或文件夹。模块(Module): 工程下的子单元&#xff0c;用于划分项…

深度解析云计算:概念、优势与分类全览

以下是对云计算概念、优点和分类更详细的介绍&#xff1a; 一、云计算的概念 云计算是一种通过互联网提供计算服务的模式&#xff0c;它基于虚拟化、分布式计算、网络存储等一系列先进技术&#xff0c;将计算资源进行整合和管理&#xff0c;形成一个庞大的资源池。这些资源包…

高并发系统的通用设计方法是什么?

背景 高并发系统的通用设计方法是解决系统在面对大量用户访问时的性能瓶颈问题。当系统遇到性能瓶颈时&#xff0c;通常是因为某个单点资源&#xff08;如数据库、后端云服务器、网络带宽等&#xff09;达到了极限。 为了提升整个系统的容量&#xff0c;需要找到这个瓶颈资源…

【手机】vivo手机应用声音分离方案

文章目录 前言方案 前言 尝试分离vivo手机音乐与其他应用的声音 方案 最佳方案&#xff1a;网易云音乐设置内关闭音量均衡 上传不同的白噪音&#xff0c;成功 goodlock&#xff0c;主要适用于三星手机&#xff0c;vivo不一定适用 app volume control &#xff0c;可行

一个报错说函数为私有函数

你遇到的警告信息&#xff1a; warning: declaration of struct Zero2TenVDrv will not be visible outside of this function [-Wvisibility]这是编译器提示你在某个函数内部声明了一个结构体 struct Zero2TenVDrv&#xff0c;但这个结构体的声明作用域仅限于该函数内部&…

3.2 Agent核心能力:感知、规划、决策与执行

智能代理&#xff08;Agent&#xff09;是一种能够在复杂环境中自主运作的计算实体&#xff0c;其智能行为依赖于四大核心能力&#xff1a;感知&#xff08;Perception&#xff09;、规划&#xff08;Planning&#xff09;、决策&#xff08;Decision-making&#xff09;和执行…

图解Mysql原理:深入理解事务的特性以及它的实现机制

前言 大家好&#xff0c;我是程序蛇玩编程。 Mysql中事务大家不陌生吧&#xff0c;事务就是要保证一组数据库操作&#xff0c;要么全部成功&#xff0c;要么全部失败。那它具有哪些特性&#xff0c;如何实现的呢?接着往下看。 正文 事务的特性: 事务的基本特性主要为四种…

进行网页开发时,怎样把function()中变量值在控制台输出,查看?

在网页开发过程中&#xff0c;为了及时了解JavaScript中的function函数中的变量值&#xff0c;可以用控制台命令console.log()把变量的值在控制台输出&#xff0c;方便调试时对函数变量值进行了解。 看下面的一段示例&#xff1a; <!DOCTYPE html> <html> &l…

linux内核进程管理(1)——创建,退出

linux源码阅读——进程管理&#xff08;1&#xff09; 1. 进程的基本介绍1.1 linux中进程和线程的区别1.2 task_struct中的基本内容1.3 命名空间ns(namespace)命名空间结构图Linux 中的命名空间类型 1.4 进程标识符 2. 创建一个进程的流程2.1 CLONE宏2.2 创建进程系统调用1. do…

人像面部关键点检测

此工作为本人近期做人脸情绪识别&#xff0c;CBAM模块前是否能加人脸关键点检测而做的尝试。由于创新点不是在于检测点的标注&#xff0c;而是CBAM的改进&#xff0c;因此&#xff0c;只是借用了现成库Dilb与cv2进行。 首先&#xff0c;下载人脸关键点预测模型:Index of /file…

【Python】每隔一段时间自动清除网站上cookies的方法

我在写爬虫的时候&#xff0c;经常会因为点击浏览太多的页面&#xff0c;而导致很多的cookies累积。 虽然单个Cookie很小&#xff0c;但长期积累可能占用浏览器存储空间&#xff0c;导致浏览器运行变慢&#xff08;尤其对老旧设备&#xff09;。 而且Cookies&#xff08;尤其…

非隔离电源芯片WT5104

非隔离电源芯片WT5104 非隔离电源芯片 WT5104 介绍 WT5104 是一款超高效且高精度的非隔离降压开关电源恒压控制驱动芯片&#xff0c;在各类电源转换场景中提供5V辅助电源供电发挥着重要作用。 一、芯片特点 高集成度&#xff1a;内部集成 800V 功率 MOSFET&#xff0c;极大减…

基于 Python 的自然语言处理系列(83):InstructGPT 原理与实现

&#x1f4cc; 论文地址&#xff1a;Training language models to follow instructions with human feedback &#x1f4bb; 参考项目&#xff1a;instructGOOSE &#x1f4f7; 模型架构图&#xff1a; 一、引言&#xff1a;为什么需要 InstructGPT&#xff1f; 传统的语言模型…

零基础入门 Verilog VHDL:在线仿真与 FPGA 实战全流程指南

摘要 本文面向零基础读者,全面详解 Verilog 与 VHDL 两大主流硬件描述语言(HDL)的核心概念、典型用法及开发流程。文章在浅显易懂的语言下,配合多组可在线验证的示例代码、PlantUML 电路结构图,让你在 EDA Playground 上动手体验数字电路设计与仿真,并深入了解从 HDL 编写…

Kubernetes控制平面组件:API Server详解(二)

云原生学习路线导航页&#xff08;持续更新中&#xff09; kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计&#xff08;一&#xff09;Kubernetes架构原则和对象设计&#xff08;二&#xff09;Kubernetes架构原则和对象设计&#xff08;三&#xff09;Kubernetes控…

云服务器存储空间不足导致的docker image运行失败或Not enough space in /var/cache/apt/archives

最近遇到了两次空间不足导致docker实例下的mongodb运行失败的问题。 排查错误 首先用nettools看下mongodb端口有没有被占用&#xff1a; sudo apt install net-tools netstat --all --program | grep 27017 原因和解决方案 系统日志文件太大 一般情况下日志文件不会很大…

爬虫学习——下载文件和图片、模拟登录方式进行信息获取

一、下载文件和图片 Scrapy中有两个类用于专门下载文件和图片&#xff0c;FilesPipeline和ImagesPipeline&#xff0c;其本质就是一个专门的下载器&#xff0c;其使用的方式就是将文件或图片的url传给它(eg:item[“file_urls”])。使用之前需要在settings.py文件中对其进行声明…

拒绝用电“盲人摸象”,体验智能微断的无缝升级

&#x1f31f; 为什么需要智能微型断路器&#xff1f; 传统断路器只能被动保护电路&#xff0c;而安科瑞智能微型断路器不仅能实时监测用电数据&#xff0c;还能远程控制、主动预警&#xff0c;堪称用电安全的“全能卫士”&#xff01;无论是家庭、工厂还是商业楼宇&#xff0…