TensorFlow2.x 学习笔记(五)神经网络与全连接层

用tensorflow实现简单的全连接层网络 参考网上给的例程使用tensorflow实现了一个简单的全连接层网络的搭建。训练一个神经网络匹配二元函数。 步骤主要如下: 导入相应的包 定义添加层 准备训练数据 构建神经网络层 定义损失函数和训练优化使损失函数最小化 初始化变量,激活结构 迭代训练 1、首先导入相应的包,有tensorflow、numpy import tensorflow as tf import nump... 阅读详情

数据加载

keras.datasets

boston housing

  • Boston housing price regression dataset

mnist/fashion mnist

  • MNIST/Fashion-MNIST dataset

MNIST

(x, y), (x_test, y_test) = keras.datasets.mnist.load_data()
x.shape # 60000,28,28
y.shape # 60000,
x_test.shape, y_test.shape
# (10000, 28, 28), (10000, )
y_onehot = tf.one_hot(y, depth=10)

cifar10/100

  • small images classification dataset
  • 10/100区别在于大类下的label划分
  • [32, 32, 3]
(x, y), (x_test, y_test) = keras.datasets.cifar10.load_data()
x.shape, y.shape, x_test.shape, y_test.shape
# ((50000, 32, 32, 3), (50000, 1), (10000, 32, 32, 3), (10000, 1))

imdb

  • sentiment classification dataset

tf.data.Dataset

  • from_tensor_slices()
(x, y), (x_test, y_test) = keras.datasets.cifar10.load_data()
db = tf.data.Dataset.from_tensor_slices(x_test)
next(iter(db)).shape
# [32, 32, 3]
db = tf.data.Dataset.from_tensor_slices((x_test, y_test))
next(iter(db))[0].shape
# [32, 32, 3]
  • .shuffle
db = tf.data.Dataset.from_tensor_slices((x_test, y_test))
db = fb.shuffle(10000)
  • .map
def preprocess(x, y):
	x = tf.cast(x, dtype=tf.float32)/255.
	y = tf.cast(y, dtype=tf.int32)
	y = tf.one_hot(y, depth=10)
	return x, y
db2 = db.map(preprocess)
res = next(iter(db2))
res[0].shape, res[1].shape
# [32, 32, 3], [1, 10]
res[1][:2]
# shape:(1, 10) dtype = float32
  • batch
db3 = db2.batch(32)
res = next(iter(db3))
res[0].shape, res[1].shape
# [32, 32, 32, 3], [32, 1, 10]
  • StopIteration
db_iter = iter(db3)
while True:
	x,y = next(db_iter)
##########OutOfRangeError#############
  • .repeat()
db4 = db3.repeat()
db4 = db3.repeat(4)

Example

def pre_mnist(x, y):
	x = tf.cast(x, tf.float32) / 255.0
	y = tf.cast(y, tf.int64)
	return x, y
def mnist_dataset():
	(x, y), (x_val, y_val) = datasets.fashion_mnist.load_data()
	y = tf.one_hot(y, depth=10)
	y_val = tf.one_hot(y_val, depth=10)
	
	ds = tf.data.Dataset.from_tensor_slices((x, y))
	ds = ds.map(pre_mnist)
	ds = ds.shuffle(60000).batch(100)
	ds_val = tf.data.Dataset.from_tensor_slices((x_val, y_val))
	ds_val = ds_val.map(pre_mnist)
	ds_val = ds_val.shuffle(10000).batch(100)
	return ds, ds_val

全连接层

Dense

x = tf.random.normal([4,784])
net = tf.keras.layers.Dense(512)
out = net(x)
out.shape
TensorShape([4, 512])
net.kernel.shape, net.bias.shape
# [784, 512], [512]
net = tf.keras.layers.Dense(10)
net.bias

net.get_weights() # []
net.weights # []

net.build(input_shape=(None, 4))
net.kernel.shape, net.bias.shape
# [4, 10], [10]

net,build(input_shape=(None, 20))
net.kernel.shape, net.bias.shape
# [20, 10], [10]

Sequential

x = tf.random.normal([2, 3])
model = keras.Sequential([
		keras.layers.Dense(2, activation='relu'),
		keras.layers.Dense(2, activation='relu'),
		keras.layers.Dense(2)
	])
model.build(input_shape=[None, 3])
model.summary()

for p inmodel.trainable_variables:
	print(p.name, p.shape)

Output

y ∈ R d y \in R^d y∈Rd

  • linear regression
  • naive classification with MSE
  • other general prediction
  • out = relu(X@W + b)
    • logits

y i ∈ [ 0 , 1 ] y_i \in [0,1] yi​∈[0,1]

  • binary classification
    • y > 0.5 → 1 y>0.5\rightarrow 1 y>0.5→1
    • y > 0.5 → 1 y>0.5\rightarrow 1 y>0.5→1
  • Image Generation
    • rgb
tf.sigmoid

σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1+e^{-x}} σ(x)=1+e−x1​

a = tf.linspace(-6., 6, 10)
tf.sigmoid(a)
x = tf.random.normal([1, 28, 28])*5
tf.reduce_min(x), tf.reduce_max(x)

x = tf.sigmoid(x)
tf.reduce_min(x), tf.reduce_max(x)

y i ∈ [ 0 , 1 ] , ∑ y i = 1 y_i \in [0,1], \sum{y_i} = 1 yi​∈[0,1],∑yi​=1

softmax
a = tf.linspace(-2., 2, 5)
tf.nn.softmax(a)
Classification
logits = tf.random.uniform([1, 10], minval=-2, maxval=2)
prob = tf.nn.softmax(logits, axis=1)
tf.reduce_sum(prob, axis=1)

y i ∈ [ − 1 , 1 ] y_i \in [-1, 1] yi​∈[−1,1]

tanh
a = tf.linspace(-2., 2, 5)
tf.tanh(a)

损失函数

MSE

  • M S E = 1 N ∑ ( y − o u t ) 2 MSE = \frac{1}{N} \sum{(y - out)^2} MSE=N1​∑(y−out)2
  • L 2 − n o r m = ∑ ( y − o u t ) 2 L_{2-norm} = \sqrt{\sum{(y - out)^2}} L2−norm​=∑(y−out)2 ​
y = tf.constant([1, 2, 3, 0, 2])
y = tf.one_hot(y, depth=4)
y = tf.cast(y, dtype=tf.float32)

out = tf.random.normal([5, 4])

loss1 = tf.reduce_mean(tf.square(y - out))
loss2 = tf.square(tf.norm(y - out))/(5 * 4)
loss3 = tf.reduce_mean(tf.losses.MSE(y, out))#这个mean求的是batch的平均,MSE输出的shape为(5,)
#loss1 = loss2 = loss3

Cross Entropy Loss

Entropy
  • H ( P ) = − ∑ i p ( i ) l o g p ( i ) = − E x ∼ p [ l o g p ( x ) ] H(P) = -\sum\limits_{i}{p(i)logp(i)} = -E_{x\sim p}{[logp(x)]} H(P)=−i∑​p(i)logp(i)=−Ex∼p​[logp(x)]
Cross Entropy
  • H ( p , q ) = − ∑ p ( x ) l o g q ( x ) = − E x ∼ p [ l o g q ( x ) ] H(p,q) = - \sum{p(x)logq(x)} = -E_{x\sim p}{[logq(x)]} H(p,q)=−∑p(x)logq(x)=−Ex∼p​[logq(x)]
  • H ( p , q ) = H ( p ) + D K L ( p ∣ q ) H(p,q) = H(p) + D_{KL}(p|q) H(p,q)=H(p)+DKL​(p∣q)
  • KL散度可以衡量两个分布的差异
  • D K L ( p ∣ ∣ q ) = E x ∼ p [ l o g p ( x ) q ( x ) ] D_{KL}(p||q) = E_{x\sim p}{[log{\frac{p(x)}{q(x)}}]} DKL​(p∣∣q)=Ex∼p​[logq(x)p(x)​]
Classification
Single output(binary)

l o s s = − ( y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) ) loss = -(ylog\hat y + (1-y)log(1-\hat y)) loss=−(ylogy^​+(1−y)log(1−y^​))

Multi output

onehot编码时
l o s s = − l o g q i   w h e r e   p i = 1 loss = -logq_i\ where \ pi = 1 loss=−logqi​ where pi=1

Categorical Cross Entropy
tf.losses.categorical_crossentropy([0, 1, 0, 0], [0.25, 0.25, 0.25, 0.25])
#1.3862
tf.losses.categorical_crossentropy([0, 1, 0, 0], [0.01, 0.97, 0.01, 0.01])
#0.0304
tf.losses.BinaryCrossentropy()([1],[0.1])#class
tf.losses.binary_crossentropy([1],[0.1])#func
Numerical Stability
x = tf.random.normal([1, 784])
w = tf.random.normal([784, 2])
b = tf.zeros([2])
logits = x @ w + b
prob = tf.math.softmax(logits, axis=1)
tf.losses.categorical_crossentropy([0, 1], logits, from_logits=True)
tf.losses.categorical_crossentropy([0, 1], prob)#same as above but not recommanded

随着tf2.1的更新,这些被整合到tf.keras.losses中了

LetNET-5神经网络--tensorflow LetNET-5神经网络–tensorflow实现 文章目录LetNET-5神经网络--tensorflow实现卷积神经网络(Convolutional Neural Network, CNN)卷积基本操作卷积过程的计算池化基本操作池化过程的计算LetNet-5结构:1. INPUT层2. C1层3. S2层4. C3层5. S4层6. C5层7.F6层8.OUTPUT层选择tensorflowt... 阅读详情

相关推荐

TensorFlow2 入门指南 | 08 认识与搭建全连接层神经网络

本专栏在保证内容完整性的基础上,力求简洁,旨在让初学者能够更快地、高效地入门TensorFlow2 深度学习框架!

不积跬步,无以至千里! 2152

Tensorflow2——卷积神经网络的搭建

Tensorflow2卷积神经网络的搭建卷积神经网络Fasion_minst识别卷积神经网络搭建代码 卷积神经网络 1、卷积神经网络 CNN最大的特点就是在于卷积的权值共享,利用空间结构减少学习的参数量,防止过拟合的同时减少计算量。在卷积神经网络中,第一个卷积层直接接受图像像素级的输入,卷积之后传给后面的网络,每一层的卷积操作相当于滤波器,对图像进行特征提取,原则上可保证尺度,平移和旋转不变性。 一般的卷积网络包含一下操作: (1)卷积。图像通过不同卷积核卷积并且加偏置(bias),提取局部特征,每一个卷积

weixin_45392405的博客 2407

〖TensorFlow2.0笔记1〗TensorFlow2.x介绍和详细安装指南(Win&Linux)

Tensorflow Dev Summit 正式宣布 Tensorflow 2.0 进入 Alpha 阶段。 1、首先基于自己安装的Anaconda 创建环境一个尝鲜环境: conda create -n tf2.0 python=3.6 2、然后进入刚刚创建好的环境: conda activate tf2.0 3、执行下面的安装命令: pip install tensorflow...

AI新视界 1万+

用Tensorflow2搭建经典的卷积神经网络(LeNet,AlexNet,VGG16,ResNet50)

最近看了卷积神经网络的一些经典论文,用Tensorflow2进行了复现,其中包括LeNet,AlexNet,VGG16,ResNet50,并且在数据集上进行了测试,能够正常训练,结果表明搭建的没有问题。 下面进入正题: import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers import numpy as np import matplotlib.pyplot as plt %matpl

QianLong_的博客 1638

从零到实战:用QCustomPlot在QT中绘制动态曲线图(含OpenGL加速配置)

本文详细介绍了如何在QT中使用QCustomPlot库绘制动态曲线图,并配置OpenGL加速以提升渲染性能。从环境搭建、动态数据可视化到OpenGL加速配置,手把手教你实现工业级动态曲线监控系统,适用于大数据量实时展示场景。

weixin_29019241的博客 352

SVDD和OCSVM的比较

OCSVM(one class support vector machine)即单类支持向量机,最先提出的文献为:Estimating the support of a high-dimensional distribution.该模型 将数据样本通过核函数映射到高维特征空间,使其具有更良好的聚集性,在特征空间中求解一个最优超平面实现目标数据与坐标原点的最大分离,如图1: 坐标原...

qq_33880788的博客 1万+

tensorflow2.0之卷积神经网络

tf.keras实现卷积神经网络 Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行。 Keras可以很明确的定义了层的概念,反过来层与层之间的参数反倒是用户不需要关心的对象,所以构建神经网络的方法对于普通开发者来说,相对tensorflow,Keras更易上手。 并且Keras也是tensorflow官方在tensorflow2.0开始极力推荐使用的。 卷积神经网络(Convolutional Neural Ne

qq_44971458的博客 2321

VS2022 中 std::mutex 静态初始化陷阱:一次诡异崩溃的排查记录

VS2022中使用std::mutex时遇到的静态初始化陷阱问题。该问题源于VS2022 17.4版本为std::mutex添加constexpr支持后,全局静态初始化可能导致系统资源未就绪时锁失效或崩溃。文章分析了问题现象、影响范围,并提供了解决方案。最后给出了排查清单和核心建议

qq_34552942的博客 952

tensorflow2函数式API搭建神经网络

简单的入门级别神经网络搭建 文章目录框架概念神经网络代码示例注解 框架概念 tensorflow是当今深度学习的主要平台之一,其由谷歌团队开发。现在,keras与tensorflow高度集成在一起,我们的每一段keras代码可运行在TF后台。另外,通过TensorFlow,keras可以在CPU以及GPU上无缝运行。 神经网络 一,深度神经网络是机器学习(ML, Machine Learning)领域中一种技术。一般全连接的神经网络包括了输入层,输出层以及隐藏层几个部分。 二、卷积神经网络卷积神经

qq_41472590的博客 1278

【商业化】【msix打包】Python 应用打包为 MSIX 的正确流程:入口点问题与解决方案

发现用msix打包工具打包python做的exe时总找不到程序入口点,后来理了一下才发现自己误会了,需要先生成一个基本的setup.exe,msix的打包是基于这个初始的安装程序进行的。只需要点击Buile-》Compile,然后Open Output Folder就可以得到exe安装程序了。可以使用免费工具inno setup来创建初始安装包。其中{group}这样的变量会自动匹配,不用自己指定。如果点击Run会运行安装程序。

每日出拳老爷子的博客 1105

Java电商秒杀系统性能优化(一)——电商秒杀系统框架回顾

电商秒杀系统框架回顾项目简介外部依赖框架回顾项目要点项目中存在的问题小结 课程是免费的,课程地址如下:SpringBoot搭建电商秒杀项目,课程真的很棒,作者的思路很清晰,建议各位读者可以跟着视频练习一下这个项目; 项目简介 通过SpringBoot快速搭建的前后端分离的电商基础秒杀项目。项目通过应用领域驱动型的分层模型设计方式去完成:用户otp注册、登陆、查看、商品列表、进入商品详情以及倒计时秒...

ghw15221836342的博客 3721

TensorFlow(2) 使用TF构建多层感知机预测MNIST数据集

import tensorflow as tf import tensorflow.examples.tutorials.mnist.input_data as input_data import matplotlib.pyplot as plt #读入数据---------------------------------------------------------------------- mnist = input_data.read_data_sets('MNIST_data/',one_hot=

zhangyugebb的博客 325

Unity Hub报错The Hub as encountered a critical error and must close

如果注册表HKEY_LOCAL_MACHINE\SOFTWARE\Unity Technologies\这个目录下有Hub文件,直接删掉然后重装就可以。C:\Users\Administrator\AppData\Roaming\Unity 作者:SevenVee。HKEY_CURRENT_USER\Software\Unity 下所有项,尝试过,卸载重装,清除临时文件无果后,最终决定删除所有与Hub有关的文件。重装unity后可以打开了。结果:卸载重装后还是会出现此问题。结果:重装后还是无法解决。

qq_42345116的博客 3638

【Tensorflow2.x学习笔记】- 神经网络

1.感知机 2.全连接层 3.神经网络 4.激活函数 5.输出层设计 6.误差计算 7.神经网络类型

qq_42433311的博客 1956

手把手教你用若依WMS搭建企业级仓库管理系统(Vue+Spring Boot实战)

本文提供了一份基于若依框架(RuoYi)快速搭建企业级仓库管理系统(WMS)的实战指南。详细介绍了从环境准备、项目初始化到核心功能模块(如入库流程、库存管理看板)深度定制的全过程,并涵盖Lodop打印集成、移动端PWA适配及生产环境Docker部署等高级主题,帮助开发者高效构建稳定可用的WMS系统。

weixin_29015899的博客 564

嵌入式工程师必学(118):MCU的硬件定时器和中断

大多数微处理器都有一个或多个可编程硬件定时器,这些定时器包括对中断的支持。可以有不同类型的计时器,用于不同的应用程序。例如,LPC1768 具有四个 32 位通用定时器、一个看门狗定时器、一个重复中断定时器、一个系统滴答定时器、一个正交编码器接口、6 个 PWM 输出和一个支持中断的实时时钟。硬件定时器用于计时和计数作,允许处理器在 timer 进程运行时继续执行其他进程。硬件定时器是一种使用 clock 信号来增加 register 的电路。

码农17年的博客 211

tensorflow:使用TensorFlow实现神经网络模型的创建

文章目录神经网络1.全连接层1.1 张量方式实现1.2 层方式实现2.神经网络2.1 张量方式实现2.2 层方式实现3.激活函数3.1 Sigmoid3.2 ReLU3.3 LeakyReLU3.4 Tanh4.输出层设计4.1Softmax5.误差计算5.1 均方差误差函数5.2 交叉熵误差函数6.汽车油耗预测实战 神经网络 1.全连接层 输出向量为???? = [????1, ????2]。整个网络层可以通过一次矩阵运算完成: 1.1 张量方式实现 在 TensorFlow 中,要实现全连接层,只需要

逐梦er的博客 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

tensorflow 2.0 神经网络与全连接层 之 全连接层 (Class API)

5.3 全连接层深度学习发展基础全连接层多层全连接层 深度学习发展基础 大数据 激活函数 DropOut BatchNorm ResNet 初始化 深度学习框架 caffe/Pytorch/tensorflow 计算能力 (显卡) … 全连接层 x = tf.random.normal([4, 784]) net = tf.keras.layers.Dense(512) out = net(...

记录求学阶段的技术学习、项目实践与成长思考。 6307

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【深度学习】用tensorflow搭建自己的神经网络

【深度学习】用python搭建自己的神经网络

gogo小Sa的专栏 3万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

基于TensorFlow2.x框架开发机器学习

前言 TensorFlow是什么?它与神经网络、深度学习有什么关系么? 有TensorFlow2.x那应该有TensorFlow1.x 的版本的,它们的主要区别是什么呢,有什么亮点吗? 目录 前言 一、机器学习、神经网络简单介绍 1)机器学习简介 2)解决机器学习问题的步骤 3)神经网络剖析 4)训练神经网络 二、TensorFlow 介绍篇 1)什么是TensorFlow? 2)TensorFlow 特点 3)TensorFlow的发展历程 4)TensorFlow1.0 与.

黎国溥 7304

【深度学习_TensorFlow】感知机、全连接层、神经网络

系列文章_神经网络

m0_73222051的博客 2327

Tensorflow2.0与Tensorflow1.x不兼容问题

部分依赖tensorflow1.0实现的代码,在tensorflow2版本下出现不兼容的问题。 将代码中导入tf包语: import tensorflow as tf 用以下代码代替: import tensorflow.compat.v1 as tf tf.disable_v2_behavior()

xiaohui2014的博客 9737

Tensorflow2.x 用Lenet神经网络训练 fashion_mnist数据集 并预测。

1.用Tensorflow2.x 建立神经网络需要导入的库文件 2.用Tensorflow2.x 建立Lenet神经网络: Lenet网络长这样 用Tensorflow 2.0 代码实现该网络: (1)建立Lenet网络 #建立网络 def Net(): x = tf.keras.layers.Conv2D(6, kernel_size=(5, 5), strides=(1, 1), activation='relu')#第一层,卷积层,6表示:有6个卷积核 x = ..

weixin_50314406的博客 1761

神经网络学习小记录1——利用tensorflow构建卷积神经网络(CNN)

神经网络学习小记录1——利用tensorflow构建卷积神经网络(CNN)学习前言简介隐含层介绍1、卷积层2、池化层3、全连接层具体实现代码卷积层、池化层与全连接层实现代码全部代码 学习前言 学习神经网络已经有一段时间,从普通的BP神经网络到LSTM长短期记忆网络都有一定的了解,但是从未系统的把整个神经网络的结构记录下来,我相信这些小记录可以帮助我更加深刻的理解神经网络。 简介 卷积神经网络(C...

Bubbliiiing的学习小课堂 1万+

全连接层与循环神经网络的区别

1.背景介绍 全连接层(Fully Connected Layer)和循环神经网络(Recurrent Neural Network, RNN)是两种不同的神经网络架构,它们在处理不同类型的数据和任务时表现出各自的优势。全连接层是一种传统的神经网络结构,其中每个输入节点与每个输出节点都有权重,形成一个完全连接的图。而循环神经网络则是一种递归神经网络的特例,它们可以处理序列数据,例如自然语言、时间...

AI天才研究院 1147

卷积神经网络(CNN)详解及TensorFlow2代码实现

卷积神经网络名字听着挺吓人,本文用通俗易懂的方式解释。人人都能看懂。 文章目录卷积是什么一、卷积神经网络介绍卷积层--提取局部图片特征扩充--padding,保持卷积后图片的长和宽保持不变池化层---降低维度,降低模型复杂度和计算量全连接层--输出结果二、TensorFlow2代码实现1.导入数据2.用TensorFlow2构建一个CNN网络总结 卷积是什么 卷积神经网络就是传统神经网络运用了矩阵卷积的技术。 二维线性卷积: 矩阵举例: (摘抄自) 现在有一张图片 f(x,y) 和一个kernel核

9851
上一篇: [LeetCode 1351~1354][周赛]周赛176题解
下一篇: TensorFlow2.x 学习笔记(六)随机梯度下降以及数据可视化
IDrandom
博客等级 码龄12年 31粉丝 125原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值