利用tensorflow搭建Alexnet,并进行.tflite的导出

本文介绍了如何利用TensorFlow的Keras API搭建Alexnet网络,并详细阐述了从.h5模型转换为.pb文件,再进一步导出为.tflite轻量化模型的步骤,为在移动设备和嵌入式设备上运行深度学习模型提供指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

        TensorFlow Lite是一种用于设备端推断的开源深度学习框架,可帮助开发者在移动设备、嵌入式设备和IoT设备上运行TensorFlow模型,本篇文章将简要介绍利用tensorflow搭建Alexnet网络,并进行.tflite文件导出的过程,为后续在移动设备、嵌入式设备中使用.tflite文件进行后续开发做准备。


一、搭建Alexnet网络

        使用tf中的keras API进行网络的搭建,tf中的keras API与keras存在一定的区别,tf作为一种静态计算流,在训练阶段具有较高的效率,但是对于用户而言,进行网络的搭建、修改等工作时,可使用性较低,kerase最初是谷歌的一位研究人员为了方便自己的研究而开发的一款简化深度学习操作的封装,允许工作人员灵活的构建网络,可用性较强,随后tf开发了针对于kerase的高级API,两者在功能上类似,但是在使用过程中要注意区分,否则有可能引发异常。

from tensorflow.keras import layers, models, Model, Sequential
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import tensorflow as tf
import os
from PIL import Image
import numpy as np
import json
import matplotlib.pyplot as plt

def AlexNet(im_height=224, im_width=224, class_num=3):  #class_num需要根据实际识别类别设置,宽高固定为224
    # tensorflow中的tensor通道排序是NHWC
    input_image = layers.Input(shape=(im_height, im_width, 3), dtype="float32") 
    x = layers.ZeroPadding2D(((1, 2), (1, 2)))(input_image) 
    x = layers.Conv2D(48, kernel_size=11, strides=4, activation="relu")(x) 
    x = layers.MaxPool2D(pool_size=3, strides=2)(x) 
    x = layers.Conv2D(128, kernel_size=5, padding="same", activation="relu")(x)
    x = layers.MaxPool2D(pool_size=3, strides=2)(x)                         
    x = layers.Conv2D(192, kernel_size=3, padding="same", activation="relu")(x) 
    x = layers.Conv2D(192, kernel_size=3, padding="same", activation="relu")(x) 
    x = layers.Conv2D(128, kernel_size=3, padding="same", activation="relu")(x)  
    x = layers.MaxPool2D(pool_size=3, strides=2)(x) 
    x = layers.Flatten()(x)         
    x = layers.Dropout(0.2)(x)
    x = layers.Dense(2048, activation="relu")(x) 
    x = layers.Dropout(0.2)(x)
    x = layers.Dense(2048, activation="relu")(x)
    x = layers.Dense(class_num)(x)        
    predict = layers.Softmax()(x)
    model = models.Model(inputs=input_image, outputs=predict)
    return model

###################################################
########  train  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值