人工智能实践Tensorflow笔记:Tensorflow框架-3

简介: 人工智能实践Tensorflow笔记:Tensorflow框架-3

基于 Tensorflow 的 NN:

用张量表示数据,用计算图搭建神经网络,用会话执行计算图,优化线上的权重(参数),得到模型。


张量tensor:

张量就是多维数组(列表),用“阶”表示张量的维度。

0 阶张量称作 标量scalar

1 阶张量称作 向量vector []

2 阶张量称作 矩阵matrix [[]]


数据类型:

Tensorflow 的数据类型有 tf.float32、tf.int32 等。


计算图(Graph):

搭建神经网络的计算过程,是承载一个或多个计算节点的一张图,只搭建网络,不运算。

image.png

会话(Session):

执行计算图中的节点运算。


神经网络的参数:

是指神经元线上的权重 w


神经网络中常用的生成随机数/数组的函数

image.png


image.png

神经网络的实现过程:

1、准备数据集,提取特征,作为输入喂给神经网络(Neural Network,NN)

2、搭建 NN 结构,从输入到输出(先搭建计算图,再用会话执行)

( NN 前向传播算法 计算输出)

3、大量特征数据喂给 NN,迭代优化 NN 参数

( NN 反向传播算法 优化参数训练模型)

4、使用训练好的模型预测和分类


训练过程和使用过程


前向传播:

就是搭建模型的计算过程,让模型具有推理能力,可以针对一组输入给出相应的输出。

image.png

待优化的参数:

W 前节点编号,后节点编号(层数)


神经网络共有几层(或当前是第几层网络)都是指的计算层,输入不是计算层


反向传播:

训练模型参数,在所有参数上用梯度下降,使 NN 模型在训练数据上的损失函数最小。

image.png

损失函数(loss):

计算得到的预测值 y 与已知答案 y_的差距。


均方误差 MSE:

求前向传播计算结果与已知答案之差的平方再求平均。

loss_mse = tf.reduce_mean(tf.square(y_ - y))

image.png

反向传播训练方法:

以减小 loss 值为优化目标,有梯度下降、momentum 优化器、adam 优化器等优化方法。

随机梯度下降算法

train_step=tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)

超参数

train_step=tf.train.MomentumOptimizer(learning_rate, momentum).minimize(loss)

自适应学习率的优化算法

train_step=tf.train.AdamOptimizer(learning_rate).minimize(loss)


学习率:决定每次参数更新的幅度。

进阶:反向传播参数更新推导过程


搭建神经网络的八股

准备工作

前向传播

反向传播

循环迭代


linux:

vim ~/.vimrc 写入:

set ts=4 表示使 Tab 键等效为 4 个空格

set nu 表示使 vim 显示行号 nu 是 number 缩写


“提示 warning”,是因为有的电脑可以支持加速指令,

但是运行代码时并没有启动这些指令。

“提示 warning”暂时屏蔽掉。主目录下的 bashrc 文件,

加入这样一句 export TF_CPP_MIN_LOG_LEVEL=2,把“提示warning”等级降低


“0”(显示所有信息)

“1”(不显示 info),

“2”代表不显示 warning,

“3”代表不显示 error。一般不建议设置成 3


source 命令用于重新执行修改的初始化文件

使之立即生效,而不必注销并重新登录。


代码示例

随机产生 32 组生产出的零件的体积和重量,训练 3000 轮,每 500 轮输出一次损

失函数。下面我们通过源代码进一步理解神经网络的实现过程:

# -*- coding: utf-8 -*-
# @File    : 搭建神经网络八股.py
# @Date    : 2018-06-02
# 搭建神经网络的八股
# 准备工作 -> 前向传播 -> 反向传播 -> 循环迭代
# 1、导入模块,生成模拟数据集;
import tensorflow as tf
import numpy as np
BACH_SIZE = 8
SEED = 23455
# 基于随机数产生 32行2列的随机数
rng = np.random.RandomState(SEED)
X = rng.rand(32, 2)  #  随机数组, 浮点数,[0, 1)均匀分布
# 输入数据集的标签(正确答案)x0+x1<1 -> 1   x0+x1>=1 -> 0
Y = [[int(x0 + x1 < 1)] for (x0, x1) in X]
print("X: \n%s"%X)
print("Y: \n%s"%Y)
# 2、定义神经网络的输入、参数和输出,定义前向传播过程;
x = tf.placeholder(tf.float32, shape=(None, 2))
y_ = tf.placeholder(tf.float32, shape=(None, 1))
# 生成正态分布随机数,形状两行三列,标准差是 1,随机种子是 1
w1 = tf.Variable(tf.random_normal(shape=[2, 3], stddev=1, seed=1))
w2 = tf.Variable(tf.random_normal(shape=[3, 1], stddev=1, seed=1))
a = tf.matmul(x, w1)
y = tf.matmul(a, w2)
# 3、定义损失函数及反向传播方法
# 均方误差
loss = tf.reduce_mean(tf.square(y - y_))
# 随机梯度下降算法,使参数沿着梯度的反方向,即总损失减小的方向移动,实现更新参数。
train_step = tf.train.GradientDescentOptimizer(0.001).minimize(loss)
# 4、生成会话,训练 STEPS 轮
with tf.Session() as session:
    init_option = tf.global_variables_initializer()
    session.run(init_option)
    # 输出未经训练的参数值
    print("w1: \n", session.run(w1))
    print("w2 \n", session.run(w2))
    print("\n")
    # 训练模型
    STEPS = 3000
    for i in range(STEPS):
        start = (i*BACH_SIZE)%32
        end = start + BACH_SIZE
        session.run(train_step, feed_dict={x: X[start: end], y_: Y[start: end]})
        if i %500 == 0:
            total_loss = session.run(loss, feed_dict={x: X, y_:Y})
            print("ssetp %d, loss %s"% (i, total_loss))
    # 训练后的取值
    print("w1\n", session.run(w1))
    print("w2\n", session.run(w2))
"""
    由神经网络的实现结果,我们可以看出,总共训练 3000 轮,每轮从 X 的数据集
和 Y 的标签中抽取相对应的从 start 开始到 end 结束个特征值和标签,喂入神经
网络,用 sess.run 求出 loss,每 500 轮打印一次 loss 值。经过 3000 轮后,我
们打印出最终训练好的参数 w1、w2。
"""

相关文章
|
3天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
4天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
21 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
4天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
18 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
4天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
20 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
探索人工智能的无限可能:技术前沿与应用实践
【10月更文挑战第23天】探索人工智能的无限可能:技术前沿与应用实践
|
20天前
|
人工智能 算法 测试技术
探索人工智能的边界:从理论到实践的技术感悟###
一场意外的代码崩溃引发的技术觉醒 一次深夜的紧急修复,让我深刻体会到了算法优化与系统稳定性之间微妙的平衡。一行不起眼的代码错误,导致整个智能推荐系统瘫痪,这次经历促使我深入思考技术的本质和开发者的责任。本文将分享这一过程中的启示,并探讨如何通过技术创新来提升系统的鲁棒性和用户体验。 ###
|
21天前
|
人工智能 API 决策智能
swarm Agent框架入门指南:构建与编排多智能体系统的利器 | AI应用开发
Swarm是OpenAI在2024年10月12日宣布开源的一个实验性质的多智能体编排框架。其核心目标是让智能体之间的协调和执行变得更轻量级、更容易控制和测试。Swarm框架的主要特性包括轻量化、易于使用和高度可定制性,非常适合处理大量独立的功能和指令。【10月更文挑战第15天】
148 6
|
20天前
|
机器学习/深度学习 人工智能 自动驾驶
探索人工智能:从理论到实践
【10月更文挑战第22天】本文将深入探讨人工智能(AI)的理论基础,并结合实例展示如何将理论应用于实践中。我们将从AI的基本概念出发,逐步深入到机器学习、深度学习等高级主题,最后通过代码示例,展示如何实现一个简单的AI模型。无论你是AI领域的初学者,还是有一定基础的开发者,都能从本文中获得有价值的信息和启示。
|
20天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
65 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
22天前
|
机器学习/深度学习 人工智能 算法
探索人工智能:从理论到实践的旅程
【10月更文挑战第20天】本文将深入探讨人工智能(AI)的核心概念、发展历程以及在现实世界中的应用。我们将从AI的定义和历史出发,逐步揭示其工作原理和关键技术,如机器学习和深度学习。接着,通过具体的代码示例,我们将展示如何实现一个简单的AI模型,并讨论其在解决实际问题中的潜力。最后,文章将展望未来AI技术的发展趋势,包括面临的挑战和潜在的机遇。

热门文章

最新文章