tensorflow实现AlexNet

tensorflow实现alexnet模型 网上找了挺久没有能直接拿来用的,索性自己搭一个吧,精简结构图: 下面上代码: # alexnet # 构建模型 def inference(input_tensor, train, regularizer): with tf.variable_scope('layer1-conv1'):#通过tf.variable_scope函数控制tf.get_variable函数来获取以及创建过的变... 阅读详情

参考:http://hacker.duanshishi.com/?p=1661

使用LR可以得到0.92的分类正确率

使用AlexNet可以得到0.95的分类正确率


使用LR

# -*- coding: utf-8 -*-
"""
Created on Mon Jul 17 16:26:57 2017

@author: bryan
"""

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("F:\\learning\\tf\\mnist", one_hot=True)

#parameters
learning_rate=0.01
training_epochs=25
batch_size=100
display_step=1

#tf gragh input
x=tf.placeholder(tf.float32,[None,784])#28*28=784
y=tf.placeholder(tf.float32,[None,10]) #10 class

#set model weight
W=tf.Variable(tf.zeros([784,10]))
b=tf.Variable(tf.zeros([10]))

#construct model
pred=tf.nn.softmax(tf.matmul(x,W)+b) #softmax

#Minimize error using corss entropy
cost=tf.reduce_mean(-tf.reduce_sum(y*tf.log(pred),reduction_indices=1))

#Gradient Descent
optimizer=tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

#initializing the variables
init=tf.initialize_all_variables()

#Launch the gragh
with tf.Session() as sess:
    sess.run(init)
    
    #train cycle
    for epoch in range(training_epochs):
        avg_cost=0.
        total_batch=int(mnist.train.num_examples/batch_size)
        #Loop over all batches
        for i in range(total_batch):
            batch_xs, batch_ys = mnist.train.next_batch(batch_size)
            # Run optimization op (backprop) and cost op (to get loss value)
            _,c = sess.run([optimizer, cost], feed_dict={x: batch_xs,y: batch_ys})
             # compute avg loss
            avg_cost+=c/total_batch
        #display logs per epoch step
        if(epoch+1)% display_step==0:
            print ("Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(avg_cost))
    print( "Optimization Finished!")
    
    #test model
    correct_prediction=tf.equal(tf.argmax(pred,1),tf.argmax(y,1))
    #calculate accuracy
    accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))
    print( "Accuracy:", accuracy.eval({x: mnist.test.images, y: mnist.test.labels}))
    

        



使用AlexNet

# -*- coding: utf-8 -*-
"""
Created on Tue Jul 18 15:48:07 2017

@author: bryan
"""

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("F:\\learning\\tf\\mnist", one_hot=True)



# 定义网络超参数
learning_rate = 0.001
training_iters = 200000
batch_size = 64
display_step = 20

# 定义网络参数
n_input = 784 # 输入的维度
n_classes = 10 # 标签的维度
dropout = 0.8 # Dropout 的概率

# 占位符输入
x = tf.placeholder(tf.float32, [None, n_input])
y = tf.placeholder(tf.float32, [None, n_classes])
keep_prob = tf.placeholder(tf.float32)

# 卷积操作
def conv2d(name, l_input, w, b):
    return tf.nn.relu(tf.nn.bias_add(tf.nn.conv2d(l_input, w, strides=[1, 1, 1, 1], padding='SAME'),b), name=name)

# 最大下采样操作
def max_pool(name, l_input, k):
    return tf.nn.max_pool(l_input, ksize=[1, k, k, 1], strides=[1, k, k, 1], padding='SAME', name=name)

# 归一化操作
def norm(name, l_input, lsize=4):
    return tf.nn.lrn(l_input, lsize, bias=1.0, alpha=0.001 / 9.0, beta=0.75, name=name)

# 定义整个网络 
def alex_net(_X, _weights, _biases, _dropout):
    # 向量转为矩阵
    _X = tf.reshape(_X, shape=[-1, 28, 28, 1])

    # 卷积层
    conv1 = conv2d('conv1', _X, _weights['wc1'], _biases['bc1'])
    # 下采样层
    pool1 = max_pool('pool1', conv1, k=2)
    # 归一化层
    norm1 = norm('norm1', pool1, lsize=4)
    # Dropout
    norm1 = tf.nn.dropout(norm1, _dropout)

    # 卷积
    conv2 = conv2d('conv2', norm1, _weights['wc2'], _biases['bc2'])
    # 下采样
    pool2 = max_pool('pool2', conv2, k=2)
    # 归一化
    norm2 = norm('norm2', pool2, lsize=4)
    # Dropout
    norm2 = tf.nn.dropout(norm2, _dropout)

    # 卷积
    conv3 = conv2d('conv3', norm2, _weights['wc3'], _biases['bc3'])
    # 下采样
    pool3 = max_pool('pool3', conv3, k=2)
    # 归一化
    norm3 = norm('norm3', pool3, lsize=4)
    # Dropout
    norm3 = tf.nn.dropout(norm3, _dropout)

    # 全连接层,先把特征图转为向量
    dense1 = tf.reshape(norm3, [-1, _weights['wd1'].get_shape().as_list()[0]]) 
    dense1 = tf.nn.relu(tf.matmul(dense1, _weights['wd1']) + _biases['bd1'], name='fc1') 
    # 全连接层
    dense2 = tf.nn.relu(tf.matmul(dense1, _weights['wd2']) + _biases['bd2'], name='fc2') # Relu activation

    # 网络输出层
    out = tf.matmul(dense2, _weights['out']) + _biases['out']
    return out

# 存储所有的网络参数
weights = {
    'wc1': tf.Variable(tf.random_normal([3, 3, 1, 64])),
    'wc2': tf.Variable(tf.random_normal([3, 3, 64, 128])),
    'wc3': tf.Variable(tf.random_normal([3, 3, 128, 256])),
    'wd1': tf.Variable(tf.random_normal([4*4*256, 1024])),
    'wd2': tf.Variable(tf.random_normal([1024, 1024])),
    'out': tf.Variable(tf.random_normal([1024, 10]))
}
biases = {
    'bc1': tf.Variable(tf.random_normal([64])),
    'bc2': tf.Variable(tf.random_normal([128])),
    'bc3': tf.Variable(tf.random_normal([256])),
    'bd1': tf.Variable(tf.random_normal([1024])),
    'bd2': tf.Variable(tf.random_normal([1024])),
    'out': tf.Variable(tf.random_normal([n_classes]))
}

# 构建模型
pred = alex_net(x, weights, biases, keep_prob)

# 定义损失函数和学习步骤
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred, labels=y))
#cost=tf.reduce_mean(-tf.reduce_sum(y*tf.log(pred),reduction_indices=1))

optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
#optimizer=tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

# 测试网络
correct_pred = tf.equal(tf.argmax(pred,1), tf.argmax(y,1))
accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))

# 初始化所有的共享变量
init = tf.initialize_all_variables()

# 开启一个训练
with tf.Session() as sess:
    sess.run(init)
    step = 1
    # Keep training until reach max iterations
    while step * batch_size < training_iters:
        batch_xs, batch_ys = mnist.train.next_batch(batch_size)
        # 获取批数据
        sess.run(optimizer, feed_dict={x: batch_xs, y: batch_ys, keep_prob: dropout})
        if step % display_step == 0:
            # 计算精度
            acc = sess.run(accuracy, feed_dict={x: batch_xs, y: batch_ys, keep_prob: 1.})
            # 计算损失值
            loss = sess.run(cost, feed_dict={x: batch_xs, y: batch_ys, keep_prob: 1.})
            print ("Iter " + str(step*batch_size) + ", Minibatch Loss= " + "{:.6f}".format(loss) + ", Training Accuracy= " + "{:.5f}".format(acc))
        step += 1
    print ("Optimization Finished!")
    # 计算测试精度
    print ("Testing Accuracy:", sess.run(accuracy, feed_dict={x: mnist.test.images[:256], y: mnist.test.labels[:256], keep_prob: 1.}))


Tensorflow实现经典CNN网络AlexNet AlexNet在图像分类中是一个比较重要的网络,在学习的过程中不仅要学会写网络结构,知道每一层的结构,更重要的是得知道为什么要这样设计,这样设计有什么好处,如果对某些参数进行一些调整结果会有什么变化?为什么会产生这样的变化。在实际应用中,如果需要对网络结构做一些调整,应该如何调整使得网络更适合我们的实际数据?这些才是我们关心的。 阅读详情

相关推荐

【深度学习】使用tensorflow实现AlexNet

转载注明出处:http://blog.csdn.net/accepthjp/article/details/69999309 AlexNet是2012年ImageNet比赛的冠军,虽然过去了很长时间,但是作为深度学习中的经典模型,AlexNet不但有助于我们理解其中所使用的很多技巧,而且非常有助于提升我们使用深度学习工具箱的熟练度。尤其是我刚入门深度学习,迫切需要一个能让自己熟悉tensorfl

无名山丘,崛起成峰 2万+

AlexNet 网络详解及Tensorflow实现源码

** AlexNet 网络详解及Tensorflow实现源码 ** 版权声明:作者:帅虫哥 出处: http://www.cnblogs.com/vipyoumay/p/7686230.html

weixin_42327821的博客 725

AlexNet模型tensorflow实现

AlexNet模型tensorflow实现

m0_73817310的博客 547

教你用TensorFlow搭建AlexNet

勿满足于眼前的小小成就。你要问自己,我这辈子只有这样吗。 AlexNet模式是在2012年提出来的,并且在当年获得了ILSVRC的冠军,top-5的错误率为16.4%,比第二名的成绩26.2%高出许多,也从此开始确立了深度学习在计算机视觉的统治地位,是一块重要的里程碑。 该模型包含了几个比较新的技术点: 成功使用ReLu作为CNN的激活函数,验证了其效果在较深网络中比Sigmoid更好 ...

流月的博客 1690

Tensorflow实现AlexNet

0、CNN结构演化历史的图 一、AlexNet 1、 模型介绍 ​ AlexNet是由Alex  KrizhevskyAlex Krizhevsky提出的首个应用于图像分类的深层卷积神经网络,该网络在2012年ILSVRC(ImageNet Large Scale Visual Recognition Competition)图像分类竞赛中以15.3%的top-5测试错误率赢得第一名^{...

Yuancccc的博客 685

“三进制”bonsai27b+NInfer=6g显存闪电侠(token真的自由了!)

本文将1.58-bit三元大模型Bonsai27B成功移植至NInfer推理引擎,并在RTX 4080 SUPER上实现100+ token/s的极速推理。通过自研补丁扩展NInfer支持Ada架构与三元量化格式,解决激活布局、行置换等关键bug,实测PPL 6.445,单流吞吐达96.7–130.8 t/s,20题基准得分16/20。附完整复现包(含文档、工具、源码补丁),零权重分发,助力垃圾显卡跑通27B级模型。

shensanshu的博客 1万+

Tensorflow 实现AlexNet 猫狗分类

原文地址:AlexNet 关于文章的理解,网上有很多博客可以参考,这里只给出LRN(local response normalization)的一篇回答,其中形象的解释了LRN,如下图所示。地址链接 实现步骤: 1.构建网络 import tensorflow as tf from tensorflow.contrib import slim import numpy as...

爱明爱夏的博客 8690

android10 部分机型(华为)无法正常更新安装app

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file://storage/emulated/0/文件夹名/***.apk typ=application/vnd.android.package-archive }

森森先生的博客 3927

python tensorflow 中部分AlexNet构建

取自于TensorFlow实战''' 本文代码中的AlexNet不是完整的,书中也只给了卷积网络的构建,全连接层是博主自己加的,后面会分享完整的AlexNet 因为设备运算速度原因,只计算前向和反向的计算时间。 AlexNet使用了五个卷积层,各卷积层使用了relu、LRN,maxpool等trick 每层的卷积核大小和卷积步长需要经验和实践尝试 LRN层现在很少使用了,因为效果不是很明显,可...

qq_41644087的博客 609

SAP 银企直连实战:从零构建 DMEEX 格式树的配置与调试指南

本文详细介绍了SAP银企直连中DMEEX格式树的配置与调试方法,涵盖从基础认知到实战技巧的全流程。通过具体案例解析,帮助财务顾问快速掌握建设银行付款报文的格式树搭建、字段映射及调试优化,提升企业支付效率与准确性。

weixin_42526015的博客 567

基于ESP32和OV5640的目标检测系统

本文详细介绍了基于ESP32-S3和OV5640摄像头构建目标检测系统的完整方案。系统采用YOLOv8-Nano轻量级模型,通过INT8量化实现边缘部署,在UXGA分辨率下达到25fps帧率。文章从硬件选型、图像采集优化、模型量化部署、实时推理流水线构建等维度展开,重点解决了内存管理、电源稳定性和异常处理等嵌入式系统关键问题。该方案在资源受限条件下实现了150ms以内的端到端延迟,为物联网视觉应用提供了低成本、低功耗的解决方案,适用于智能家居、工业检测等多个场景。

reset2021的博客 329

Alexnet的tensorflow实现

代码:https://github.com/kratzert/finetune_alexnet_with_tensorflow(juypter notebook) Alexnet: 代码解析: 一、首先定义一个类: class AlexNet(object): 二、之后定义类的初始化: 注意下,'bvlc_alexnet.npy'为别人训练好的A...

qq_35752161的博客 674

v86.01 鸿蒙内核源码分析 (静态分配篇) | 很简单的一位小朋友 | 百篇博客分析 OpenHarmony 源码

相比动态分配,静态内存池的分配就是个小弟弟,非常的简单,两个结构体 + 一张图 就能说明白。

日拱一卒,力出一孔 775

AlexNet原理及Tensorflow实现

\quadAlexNet的出现点燃了深度学习的热潮,下面对其进行介绍,并使用tensorflow实现.1. AlexNet网络结构图片来源:AlexNet的论文\quad整个网络有8个需要训练的层,前5个为卷积层,最后3层为全连接层.第一个卷积层 输入的图片大小为:224*224*3 第一个卷积层为:11*11*96即尺寸为11*11,有96个卷积核,步长为4,卷积层后跟ReLU,因此输出的尺寸为

yqtao的博客 4万+

PyCharm配置SSH远程解释器第3步时弹框报错:com.google.gson.stream.MalformedJsonException: Expected value at l...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1929

yolov26改进 | Neck篇 | 利用Gold-YOLO改进yolov26对小目标检测能力(全网独家首发)

本文介绍利用Gold-YOLO的Neck改进YOLOv26,通过信息聚集—分发机制GD,先全局汇聚不同层级特征,再将融合后的全局信息重新注入各尺度分支,增强浅层细节与深层语义之间的交互,减少传统Neck逐层传递造成的信息损失。该结构虽然融合路径更长,但能够在不过度增加延迟的前提下提升多尺度目标检测能力,尤其适合大小目标并存、尺度变化明显和复杂背景场景。本文将讲解GD机制、Neck替换、模块注册与配置方法,并提供完整代码、配置文件及Codex修改思路,方便直接复现、实验对比和二次创新。

Snu77的博客 293

AlexNet简介以及Tensorflow实现

Tensorflow实现AlexNet 引言:AlexNet是2012年,Hinton的学生Alex Krizhevsky提出的深度卷积神经网络,也是首次在CNN中成功应用Relu、Dropout和LRN等技巧,并以显著的优势赢得了竞争激烈的ILSVRC 2012比赛 相关阅读: Tensorflow实现VGGNet 模块化方法: 本文将通过模块化加注释的方法,来实现AlexNet,这样可...

Invokar的博客 1536

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

TensorFlow 实现 AlexNet

TensorFlow 实现 AlexNet TensorFlow 实现 AlexNet AlexNet 主要使用到的新技术点如下。 (I成功使用 ReLU作为CNN的激活函数 ,并验证其效果在较深的网络超过了Sigmoid ,成功解决了 Sigmoid 在网络较深时的梯度弥散问题。虽然ReLU 激活函数在很久之前就被提出了 ,但是直到 AlexNet 的出现才将其发扬光大 。 ( 2 ) 训练时...

lemontree232的博客 581

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

tensorflow实现AlexNet训练mnist数据

一、AlexNet网络介绍 AlexNet 可以说是具有历史意义的一个网络结构,可以说在AlexNet之前,深度学习已经沉寂了很久。历史的转折在2012年到来,Alex Net 在当年的ImageNet图像分类竞赛中,top-5错误率比上一年的冠军下降了十个百分点,而且远远超过当年的第二名。 AlexNet 之所以能够成功,深度学习之所以能够重回历史舞台,原因在于:

明月清風 3628

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

AlexNet与TensorFlow实现

一.简介: 2012年,AlexNet以显著的优势赢得了竞争激烈的ILSVRC2012比赛,其官方提供的数据模型,准确率达到57.1%,top 1-5达到80.2%。AlexNet的出现点燃了深度学习的热潮,可以说是神经网络低谷期后的第一次发声,确立了深度学习在计算机视觉领域的统治地位。 二.AlexNet使用的新技术: 1.使用ReLU作为CNN的激活函数,解决了sigmoid在训练较深的

jinzz1314的博客 581

AlexNet网络的tensorflow实现

注意几个点: 1.所用的数据集是从Github上下载的,大家可以留言邮箱我私发给大家。 2.所有的知识点和难点都会在注释中详细说明。 3.整个代码一共有三个模块 网络模块: from tensorflow.keras import layers, models, Model, Sequential #使用keras funciton api的方法搭建网络 def AlexNet_v1(im_height=224, im_width=224, class_num=1000):#定义一个方法 传入:图像高

认真努力,做一只会飞的毛毛虫。 5004

alexnet的tensorflow实现

alexnet的训练与测试 环境:windows-tensoflow-jupyter 数据集:猫狗的二分类问题 代码: import tensorflow as tf import cv2 import os import numpy as np from sklearn.utils import shuffle PATH = ["data/dog/", "data/cat/"] #在当前路...

weixin_42195319的博客 198

【TensorFlow-AlexNet笔记2】AlexNet原理及Tensorflow实现

AlexNet的出现点燃了深度学习的热潮,下面对其进行介绍,并使用tensorflow实现.1. AlexNet网络结构图片来源:AlexNet的论文整个网络有8个需要训练的层,前5个为卷积层,最后3层为全连接层.第一个卷积层输入的图片大小为:224*224*3第一个卷积层为:11*11*96即尺寸为11*11,有96个卷积核,步长为4,卷积层后跟ReLU,因此输出的尺寸为 224/4=56,去掉...

maweifei的博客 813
上一篇: 用python实现一个神经网络
下一篇: CNN笔记:通俗理解卷积神经网络
Bryan__
博客等级 码龄12年 2500粉丝 166原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值