从零开始的TensorFlow入门指南:构建第一个模型并可视化训练过程

news2025/1/15 21:07:16

当谈到深度学习框架时,TensorFlow是最流行的之一。它是一个由Google开发的开源框架,被广泛应用于图像识别、语音识别、自然语言处理和强化学习等领域。本篇文章将介绍TensorFlow的基本概念和入门步骤,帮助初学者快速掌握TensorFlow。

 

一、TensorFlow基础概念

TensorFlow是一个用于构建和训练机器学习模型的框架。它主要包括以下几个核心概念:

  1. 张量(Tensor):张量是TensorFlow中的基本数据类型,可以看作是一个n维数组。例如,标量是一个零维张量,向量是一维张量,矩阵是二维张量。在TensorFlow中,所有的数据都是以张量的形式存储和处理。

  2. 图(Graph):图是TensorFlow中描述计算的方式。一个图由一系列的操作(Operation)和张量组成。每个操作都有零个或多个输入张量和一个输出张量。

  3. 会话(Session):会话是TensorFlow中执行计算的环境。通过会话,可以运行图中的操作,并获取输出张量的值。

  4. 变量(Variable):变量是TensorFlow中的一种特殊的张量类型,可以在计算过程中保持不变。例如,在训练神经网络时,权重和偏差通常被定义为变量。

  5. 损失函数(Loss Function):损失函数是用来评估模型预测值与真实值之间的差异。在训练模型时,目标是最小化损失函数。

二、TensorFlow入门步骤

  1. 安装TensorFlow

首先,你需要安装TensorFlow。可以通过以下命令在终端中安装TensorFlow:

pip install tensorflow

2.构建图

import tensorflow as tf

# 定义常量
a = tf.constant(2)
b = tf.constant(3)

# 定义操作
add = tf.add(a, b)

# 创建会话
sess = tf.Session()

# 运行操作
print(sess.run(add))

# 关闭会话
sess.close()

在TensorFlow中,所有的计算都是在图中进行的。你可以使用Python API来构建图。以下是一个简单的例子

3.使用变量

在训练神经网络时,需要使用变量来存储权重和偏差。以下是一个简单的例子:

import tensorflow as tf

# 定义变量
w = tf.Variable(0.0)
b = tf.Variable(

0.0)

定义输入张量

x = tf.placeholder(tf.float32)

定义模型

y = w * x + b

定义损失函数

loss = tf.reduce_mean(tf.square(y - 5))

定义优化器

optimizer = tf.train.GradientDescentOptimizer(0.01)

定义训练操作

train_op = optimizer.minimize(loss)

创建会话

sess = tf.Session()

初始化变量

sess.run(tf.global_variables_initializer())

训练模型

for i in range(100): _, l = sess.run([train_op, loss], feed_dict={x: [1, 2, 3, 4]}) print("Step %d, Loss: %f" % (i, l))

获取权重和偏差的值

w_value, b_value = sess.run([w, b]) print("w: %f, b: %f" % (w_value, b_value))

关闭会话

sess.close()


以上代码定义了两个变量w和b,并定义了一个输入张量x。然后,定义了模型y和损失函数loss。使用梯度下降优化器优化损失函数,并定义训练操作train_op。在训练过程中,迭代100次,并输出每次迭代的损失值。最后,获取权重和偏差的值,并输出。

4. 使用TensorBoard可视化训练过程

TensorBoard是TensorFlow提供的一个可视化工具,可以用于可视化模型结构、训练过程和其他统计信息。可以使用以下代码将训练过程可视化:

```python
import tensorflow as tf

# 定义变量
w = tf.Variable(0.0)
b = tf.Variable(0.0)

# 定义输入张量和真实值
x = tf.placeholder(tf.float32)
y_true = tf.placeholder(tf.float32)

# 定义模型和损失函数
y_pred = w * x + b
loss = tf.reduce_mean(tf.square(y_true - y_pred))

# 定义优化器和训练操作
optimizer = tf.train.GradientDescentOptimizer(0.01)
train_op = optimizer.minimize(loss)

# 创建会话
sess = tf.Session()

# 初始化变量
sess.run(tf.global_variables_initializer())

# 创建SummaryWriter,用于将数据写入TensorBoard
writer = tf.summary.FileWriter("./logs", sess.graph)

# 训练模型
for i in range(100):
    _, l = sess.run([train_op, loss], feed_dict={x: [1, 2, 3, 4], y_true: [5, 9, 13, 17]})
    print("Step %d, Loss: %f" % (i, l))

# 关闭会话
sess.close()

在终端中执行以下命令启动TensorBoard:

tensorboard --logdir=./logs

总结

TensorFlow是一个强大的深度学习框架,本篇文章介绍了TensorFlow

关注v❤公众H:【Ai技术星球  暗号123】 领TensorFlow相关z料+小编整理了500G人工智能学习z源

工智能学习必读的电子数据深度学习神经网络+CV计算机视觉学习资料一份,内含:两大Pytorch、TensorFlow实战框架视频、图像识别、OpenCV、计算机视觉、深度学习与神经网络等视频、代码、PPT以及深度学习书籍等

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

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

相关文章

C/C++每日一练(20230511) 公共前缀、打家劫舍、三数之和

目录 1. 最长公共前缀 🌟 2. 打家劫舍 🌟🌟 3. 最接近的三数之和 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 最…

解决chatgpt网络错误,频繁掉线的问题,那就使用KeepChatGPT

文章目录 解决chatgpt出现An error occurred. If this issue persists please contact us through our help center at help.openai.com问题起因对比原作者github地址安装步骤浏览器要求安装油猴安装KeepChatGPT插件使用方法功能栏说明功能说明如下关于 取消审计 功能关于 调整…

centos安装docker教程

系统要求 1. 若是centos7,要求64位系统,内核版本为 3.10 以上 2. 若是centos6,要求64位系统,内核版本在2.6.32以上 安装步骤 1. cat /etc/os-release 查看系统版本,验证系统是否支持如下图(我的是cento…

涉及红外的数据集

来源 红外和可见光的联合任务相关数据集 - 知乎 LLVIP Dataset(RGB-T Pedestrian Detection) Jia X, Zhu C, Li M, et al. LLVIP: A visible-infrared paired dataset for low-light vision[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2…

评估分类模型—混淆矩阵Confusion Matrix与评估指标

对于设计好的分类模型,需要大量的数据集来对其性能进行评估,因此了解评估指标是十分重要的。 评估分类模型的具体流程: 一、二分类混淆矩阵 Confusion Matrix 严格来说,对于二分类问题,没有标签,只有正例…

【C】模拟实现memcpy,memmove内存函数

目录 内存函数模拟实现 1、memcpy模拟实现 2、memmove模拟实现 3、测试案例代码 内存函数模拟实现 C 库函数 memcpy 从存储区 str2 复制 n 个字节到存储区 str1。这个函数在遇到\0的时候并不会停下来。如果str1和str2有任何的重叠,复制的结果都是未定义的。 me…

使用Notepad++对比两个文件代码方法

大家在使用Notepad的时候,需要对编辑的两个文件进行比较,找出两个文件代码的区别,快速进行编辑修改,那么Notepad如何对比文件,下面小编就给大家带来Notepad对比两个文件代码方法。 Notepad官方中文免费版:…

LinkedIn领英在什么情况下容易被封,提前学习避免进坑

领英在什么情况下容易被封 01.同一个人注册使用多个领英帐号。 02.多个人共同使用同一个领英帐号。 03.虚假资料注册领英账号,常见于注册领英账号的时候初始姓名随便填写或胡编乱造,注册时使用了网络虚拟的手机号码或邮箱等。 04.领英帐号的个人档案资料…

MySQL --- DQL --- 案例

DQL的基本语法分为五个部分已经学习完毕了,接下来运用所掌握的DQL语句的语法来完成两个案例。 1. 案例一 案例:根据需求完成员工管理的条件分页查询 分析:根据输入的条件,查询第1页数据 在员工管理的列表上方有一些查询条件&…

springMVC第一次作业及练习

1、首先我们导入网站的项目进行测试时网址直接输入教程给的localhost:8080/springmvc/index.jsp 会是一片空白,把jsp删掉就好。因为加上jsp会直接访问jsp页面,此时的页面没有被服务器处理。 2、测试无误后就开始跟教程走 两个xml文件的配置&#xff1a…

超实用的开源自动化测试框架强烈推荐

随着计算机技术人员的大量增加,通过编写代码来进行测试成为一种更为高效的测试方式,由此而诞生了以计算机语言为基础的自动化测试方案,当然测试工程师需要具备代码能力。 今天我们就结合当前的主流编程语言,分别三种环境下各自的自…

触摸屏与三菱PLC之间无线MODBUS通讯实例

在工厂里,触摸屏往往位于程控室内,作为控制多个不同位置PLC的主站设备。因为触摸屏和plc所处位置距离较为分散,重新铺设电缆线工期长,成本高,故采用无线方式解决触摸屏与PLC之间的通讯问题。 一、方案概述 本方案是威…

最近颁发的“吴文俊奖”,见证了中国AI走向产业之路

“任何足够先进的技术,初看起来都与魔法无异”——这是著名科幻作家克拉克总结的第三定律。 今年以来ChatGPT掀起的智能交互变革,大语言模型的智能涌现能力,在很多人眼里,真的就像魔法一样。 当然,大家心知肚明&#x…

环评制图丨最新导则下的生态系统、土地利用、植被覆盖、适宜生境分布图等制图

根据最新生态环境影响评价导则,结合生态环评内容庞杂、综合性强的特点,以既包括陆域、又包括水域的项目为主要案例,对生态环评的具体流程及所需内容进行系统阐述。利用Rstudio、Fragstats等软件分析计算生态环评中所需各种指数,利…

python计算分类模型的评价指标

目录 1、混淆矩阵 2、代码实现 2.1、OA 2.2、AA 2.3、kappa 2.4、用户精度(User Accuracy, UA) 2.5、生产者精度(Producer Accuracy, PA) 2.6、f1_score 2.7、混淆矩阵 2.8、分类报告 1、混淆矩阵 以二分类问题为例,混淆矩阵表现形式如下: T…

Linux系统下的文件操作

目录 一、文件理解 二、系统级的文件操作 1、打开open 2、关闭close 3、写入write 4、读取read 三、文件描述符 四、重定向 1、dup2函数 2、追加重定向 3、输入重定向 五、缓冲区 1、缓冲区存在的意义 2、缓冲区的刷新策略 一、文件理解 在Linux中,有…

Linux多线程(2)线程安全(同步与互斥)

1.线程安全 概念 在多线程程序中,涉及到了对共享资源的操作,则有可能导致数据的二义性,而线程安全指的是,就算对共享资源进行操作也不会导致数据二义。 总结:多线程中对共享资源的操作不会出现问题。 实现:…

【AUTOSA】

目录 一、概述 二、限制与约束 三、功能描述 3.1 网络通信模式请求的转换 3.2 当前网络通信方式的输出 3.3 外围设备的控制 3.3.1 以太网接口控制器 3.4 多网络 3.5 网络模式状态机 3.5.1 初始化 3.5.2 在亚状态ETHSM_STATE_OFFLINE中的行为 3.5.3 子状态ETHSM_STA…

深入学习MYSQL-数据操纵及视图

前言 本博客中的例子和文字大部分来源于书籍《mysql必会知识》,后续会根据更多的书籍不断完善此笔记。 插入操作 可以这种方式向数据库插入两条数据,mysql和pg都支持这种写法。在实战中我们应该更多的使用这种写法,因为数据库的批量操作会…

TCP之滑动窗口和流量控制

TCP 利用发送字节数和接收字节数,这个二元组的唯一性保证顺序。讨论下保证顺序的具体算法,以及如何在保证顺序的基础上,同时追求更高的吞吐量。——TCP 的滑动窗口算法。 TCP 作为一个传输层协议,最核心的能力是传输。传输需要保证…