深度学习(02)-- ANN学习

文章目录

  • 目录
    • 1.神经网络知识概览
      • 1.1深度学习顶会
      • 1.2相关比赛
      • 1.3神经网络知识概览
      • 1.4神经网络编程一般实现过程
    • 2.简单神经网络ANN
      • 2.1 数据集:
      • 2.2 网络结构:
      • 2.3 代码实现
        • 2.3.1 读取数据,并做处理
        • 2.3.2 构建网络结构
        • 2.3.3 训练网络

目录

1.神经网络知识概览

1.1深度学习顶会

  • CVPR : IEEE Conference on Computer Vision and Pattern Recognition
    • CVPR是计算机视觉与模式识别顶会
  • ICCV:IEEE International Conference on Computer Vision
    • ICCV论文录用率非常低,是三大会议中公认级别最高的
  • ECCV:European Conference on Computer Vision

1.2相关比赛

1.ImageNet

  • ImageNet 数据集最初由斯坦福大学李飞飞等人在 CVPR 2009 的一篇论文中推出
  • 在这里插入图片描述
    -
    2.webvision
    在这里插入图片描述

1.3神经网络知识概览

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

1.4神经网络编程一般实现过程

1.数据预处理
2.定义神经网络结构
3.初始化网络模型中的参数
4.开始训练模型

loop(number_iterations):forward propagationcompute costbackward propagationupdate parameters

5.对新的数据进行预测

2.简单神经网络ANN

2.1 数据集:

  • 训练集 + 测试集
  • 训练集:训练集 + 评估集

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

  • 数据信息:
    在这里插入图片描述

2.2 网络结构:

  • 网络结构 linear -> relu -> linear -> relu -> linear -> softmax
  • 网络结构12288 -> 25 -> 12 -> 6
  • 迭代次数1000,学习率0.0001,minibatch_size=32,优化算法Adam
  • 将RGB图片转换为向量(损失空间结构信息)
  • 出现过拟合,应该使用正则化(L2、Dropout、早停)

2.3 代码实现

2.3.1 读取数据,并做处理

import math
import h5py
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
import scipy
from PIL import Image
from scipy import ndimage
from tensorflow.python.framework import ops
from improv_utils import *%matplotlib inline
np.random.seed(1)# 下载数据
X_train_orig, Y_train_orig, X_test_orig, Y_test_orig, classes = load_dataset()# 显示图片
index = 2
plt.imshow(X_train_orig[index])
plt.show()
print("y = " + str(np.squeeze(Y_train_orig[:, index])))# 将数据平铺,归一化,标签one-hot
X_train_flatten = X_train_orig.reshape(X_train_orig.shape[0], -1).T
X_test_flatten  = X_test_orig.reshape(X_test_orig.shape[0], -1).TX_train = X_train_flatten/255.
X_test  = X_test_flatten/255.Y_train = convert_to_one_hot(Y_train_orig, 6)
Y_test  = convert_to_one_hot(Y_test_orig, 6)print ("number of training examples = " + str(X_train.shape[1]))
print ("number of test examples = " + str(X_test.shape[1]))
print ("X_train shape: " + str(X_train.shape))
print ("Y_train shape: " + str(Y_train.shape))
print ("X_test shape: " + str(X_test.shape))
print ("Y_test shape: " + str(Y_test.shape))

y = 2
number of training examples = 1080
number of test examples = 120
X_train shape: (12288, 1080)
Y_train shape: (6, 1080)
X_test shape: (12288, 120)
Y_test shape: (6, 120)

2.3.2 构建网络结构

# 1-1、创建占位符
def create_placeholders(n_x, n_y):"""Creates the placeholders for the tensorflow session.Arguments:n_x -- scalar, size of an image vector (num_px * num_px = 64 * 64 * 3 = 12288)n_y -- scalar, number of classes (from 0 to 5, so -> 6)Returns:X -- placeholder for the data input, of shape [n_x, None] and dtype "float"Y -- placeholder for the input labels, of shape [n_y, None] and dtype "float"Tips:- You will use None because it let's us be flexible on the number of examples you will for the placeholders.In fact, the number of examples during test/train is different."""X = tf.placeholder(tf.float32, shape = [n_x, None])Y = tf.placeholder(tf.float32, shape = [n_y, None])return X, Y# 1-2、初始化参数
def initialize_parameters():"""Initializes parameters to build a neural network with tensorflow. The shapes are:W1 : [25, 12288]b1 : [25, 1]W2 : [12, 25]b2 : [12, 1]W3 : [6, 12]b3 : [6, 1]Returns:parameters -- a dictionary of tensors containing W1, b1, W2, b2, W3, b3"""tf.set_random_seed(1)       # so that your "random" numbers match oursW1 = tf.get_variable("W1", [25,12288], initializer = tf.contrib.layers.xavier_initializer(seed = 1))b1 = tf.get_variable("b1", [25,1],     initializer = tf.zeros_initializer())W2 = tf.get_variable("W2", [12,25],    initializer = tf.contrib.layers.xavier_initializer(seed = 1))b2 = tf.get_variable("b2", [12,1],     initializer = tf.zeros_initializer())W3 = tf.get_variable("W3", [6,12],     initializer = tf.contrib.layers.xavier_initializer(seed = 1))b3 = tf.get_variable("b3", [6,1],      initializer = tf.zeros_initializer())parameters = {"W1": W1,"b1": b1,"W2": W2,"b2": b2,"W3": W3,"b3": b3}return parameters# 1-3、TensorFlow中的前向传播
# tf中前向传播停止在z3,是因为tf中最后的线性层输出是被作为输入计算loss,不需要a3
def forward_propagation(X, parameters):"""Implements the forward propagation for the model: LINEAR -> RELU -> LINEAR -> RELU -> LINEAR -> SOFTMAXArguments:X -- input dataset placeholder, of shape (input size, number of examples)parameters -- python dictionary containing your parameters "W1", "b1", "W2", "b2", "W3", "b3"the shapes are given in initialize_parametersReturns:Z3 -- the output of the last LINEAR unit"""W1 = parameters['W1']b1 = parameters['b1']W2 = parameters['W2']b2 = parameters['b2']W3 = parameters['W3']b3 = parameters['b3']Z1 = tf.add(tf.matmul(W1, X), b1)                      # Z1 = np.dot(W1, X) + b1A1 = tf.nn.relu(Z1)                                    # A1 = relu(Z1)Z2 = tf.add(tf.matmul(W2, A1), b2)                     # Z2 = np.dot(W2, a1) + b2A2 = tf.nn.relu(Z2)                                    # A2 = relu(Z2)Z3 = tf.add(tf.matmul(W3, A2), b3)                     # Z3 = np.dot(W3,Z2) + b3return Z3# 1-4、计算成本函数
def compute_cost(Z3, Y):"""Computes the costArguments:Z3 -- output of forward propagation (output of the last LINEAR unit), of shape (6, number of examples)Y -- "true" labels vector placeholder, same shape as Z3Returns:cost - Tensor of the cost function"""# to fit the tensorflow requirement for tf.nn.softmax_cross_entropy_with_logits(...,...)logits = tf.transpose(Z3)labels = tf.transpose(Y)# 函数输入:shape =(样本数,类数)# tf.reduce_mean()cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits = logits, labels = labels))return cost
def predict(X, parameters):W1 = tf.convert_to_tensor(parameters["W1"])b1 = tf.convert_to_tensor(parameters["b1"])W2 = tf.convert_to_tensor(parameters["W2"])b2 = tf.convert_to_tensor(parameters["b2"])W3 = tf.convert_to_tensor(parameters["W3"])b3 = tf.convert_to_tensor(parameters["b3"])params = {"W1": W1,"b1": b1,"W2": W2,"b2": b2,"W3": W3,"b3": b3}x = tf.placeholder("float", [12288, 1])z3 = forward_propagation(x, params)p = tf.argmax(z3)with tf.Session() as sess:prediction = sess.run(p, feed_dict = {x: X})return prediction

2.3.3 训练网络

my_image = "my_image.jpg"
fname = "images/" + my_imageimage = np.array(ndimage.imread(fname, flatten=False))
my_image = scipy.misc.imresize(image, size=(64,64)).reshape((1, 64*64*3)).T
parameters = model(X_train, Y_train, X_test, Y_test)plt.imshow(image)
plt.show()my_image_prediction = predict(my_image, parameters)
print("Your algorithm predicts: y = " + str(np.squeeze(my_image_prediction)))

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

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

相关文章

python(11)-if语句,断言assert

分支语句if1.if基本语法2 if语句的嵌套3 比较运算符号4 逻辑运算符:5 整数随机数初应用6 tip7.断言assert1.if基本语法 if语句开发中的应用场景:如果条件成立做一件事情,如果条件不成立做另外一件事情。有了if语句,程序有了分支.…

深度学习(03)-- CNN学习

文章目录目录1.CNN学习2.Keras深度学习框架目录 1.CNN学习 卷积神经网络CNN总结 从神经网络到卷积神经网络(CNN)我们知道神经网络的结构是这样的: 那卷积神经网络跟它是什么关系呢?其实卷积神经网络依旧是层级网络,…

PaperNotes(1)-Modeling the World from Internet Photo Collections

从网络图片集对世界进行建模AbstractIntroduction2 Previous Work2.1特征匹配2.2 稀疏重建2.3 基于图像建模2.4 基于图像的渲染2.5 图像浏览,检索和注释3 Overview概述4 Reconstructing Cameras and Sparse Geometry(相机标定与稀疏重建)4.1K…

深度学习(04)-- 典型CNN结构(LeNet5 ,AlexNet)

LeNet5 LeNet5可以说是最早的卷积神经网络了,它发表于1998年,论文原文Gradient-Based Learning Applied to Doucment Recognition作者是Yann Le Cun等。下面对LeNet5网络架构进行简单的说明,有兴趣的同学可以去参考原文,论文原文…

CNN的几种经典模型

本文主要介绍一下CNN的几种经典模型比较。之前自己也用过AlexNet和GoogleNet,网络上关于各种模型的介绍更是形形色色,自己就想着整理一下,以备自己以后查阅方便 LeNet5 先放一张图,我感觉凡是对深度学习有涉猎的人,对…

PaperNotes(2)-Generative Adversarial Net-代码实现资料

Generative Adversarial Nets-生成对抗网络Abstract1.Introduction2.Related work3.Adversarial nets4.Theoretical Results4.1全局最优 pgpdatap_gp_{data}pg​pdata​4.2算法1的收敛性质5.Experiments6.Advantagesa and disadvantages7.Conclusions and future work8.GAN-代码…

深度学习(05)--典型CNN结构(VGG13,16,19)

文章目录目录1.VGG结构2.VGG结构解释3.3*3卷积核的优点4.VGG的muti-scale方法5.VGG的应用目录 1.VGG结构  LeNet5用大的卷积核来获取图像的相似特征  AlexNet用99、1111的滤波器  VGG 巨大的进展是通过依次采用多个 33 卷积,模仿出更大的感受野(r…

redis——发布和订阅

频道的订阅和退订 当一个客户端执行 SUBSCRIBE 命令, 订阅某个或某些频道的时候, 这个客户端与被订阅频道之间就建立起了一种订阅关系。 Redis 将所有频道的订阅关系都保存在服务器状态的 pubsub_channels 字典里面, 这个字典的键是某个被订…

redis——事务

Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证: 批量操作在发送 EXEC 命令前被放入队列缓存。收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。在事务执行过程,其他客户端…

深度学习(06)-- Network in Network(NIN)

文章目录目录1.NIN 结构2.MLP卷积3.全局均值池化4.总体网络架构5.NIN补充5.1 广义线性模型(GLM)的局限性5.2 CCCP层5.3 1*1卷积核作用(补充)6.手势识别RGB图像--NIN结构目录 1.NIN 结构 2.MLP卷积 传统CNN的局部感受野窗口的运算…

Pytorch(2)-tensor常用操作

tensor常用数学操作1. 随机数1.1 torch.rand() - 均匀分布数字1.2 torch.randn() - 正态分布数字2. 求和2.1 torch.sum(data, dim)2.2 numpy.sum(data, axis)3. 求积3.1 点乘--对应位置相乘3.2 矩阵乘法4. 均值、方差4.1 torch tensor.mean() .std()4.2 numpy array.mean() .st…

深度学习(07)-- 经典CNN网络结构(Inception (v1-v4))

文章目录目录1.Inception介绍1.1 Inception结构1.2 Inception V1(GoogleNet)1.3 Inception V2(Batch Norm)1.4 Inception V3(Factorization)1.5 Inception V4(ResNet)1.5 Inception v1~v4 总结1.6 Inception进阶2.Inception实现目…

Python(13)-函数,lambda语句

函数1 函数定义2 函数调用3 函数注释文档4 函数参数4.1 参数列表,默认参数,任意参数4.1.1 无缺省值参数4.1.2(部分)缺省值参数4.1.3 数量不定形参数4.2 可变对象和不可变对象4.3 作用域4.3.1 globals()函数4.3.2 global 声明变量为全局变量5 函数返回值5…

深度学习(08)-- Residual Network (ResNet)

文章目录目录1.残差网络基础1.1基本概念1.2VGG19、ResNet34结构图1.3 梯度弥散和网络退化1.4 残差块变体1.5 ResNet模型变体1.6 Residual Network补充1.7 1*1卷积核(补充)2.残差网络介绍(何凯明)3.ResNet-50(Ng)3.1 非常深的神经网…

redis——命令请求的执行过程

发送命令请求 当用户在客户端中键入一个命令请求时, 客户端会将这个命令请求转换成协议格式, 然后通过连接到服务器的套接字, 将协议格式的命令请求发送给服务器。 读取命令请求 当客户端与服务器之间的连接套接字因为客户端的写入而变得可…

深度学习(09)-- DenseNet

文章目录目录1.DenseNet网络结构2.稠密连接及其优点3.代码实现4.补充说明目录 1.DenseNet网络结构 2.稠密连接及其优点 每层以之前层的输出为输入,对于有L层的传统网络,一共有L个连接,对于DenseNet,则有L*(L1)/2。 这篇论文主要…

redis——缓存击穿/穿透/雪崩

缓存穿透 一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就去后端系统查找(比如DB)。 一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透…

python(15)-window7配置iPython

前提:安装了Pythonanaconda anaconda安装参考:https://www.zhihu.com/question/58033789 在window系统下可以使用两种方法来实现类似与于Linux终端命令运行程序的方法(推荐方式2): 1.cmd:自己没有操作过,可以参考下面…

深度学习(10)-- Capsules Networks(CapsNet)

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/malele4th/article/details/79430464 </div><div id"content_views" class"markdown_views"><!-- flowchart 箭头图标 勿删 --&g…

手把手maven的功能/安装/使用/idea集成

看这篇文章不用着急安装&#xff0c;跟着步骤一定会成功&#xff0c;要理解maven是什么&#xff0c;如何使用。 介绍 maven官网 对于一个小白来说&#xff0c;官网有用的信息就是这些 不管如何介绍maven&#xff0c;作为使用者来说&#xff0c;主要感觉两个方面有帮助&#x…