Mnist 量化dpu代码解读

本文介绍了MNIST数据集的图片格式,包括训练和测试图片的数量及每张图片的像素结构。深入讲解了tf.keras.Model.compile的optimizer、loss和metrics参数,以及tf.keras.Model.fit的epochs、batch_size和validation_data参数。同时提到了MNIST FC Net的量化DPU代码。
摘要由CSDN通过智能技术生成

Mnist数据集图片格式介绍
Mnist数据集分为两部分,分别含有60000张训练图片和10000张测试图片。

每一张图片包含28*28个像素。Mnist数据集把代表一张图片的二维数据转开成一个向量,长度为28*28=784。因此在Mnist的训练数据集中mnist.train.images是一个形状为[60000, 784]的张量,第一个维度数字用来索引图片,第二个维度数字用来索引每张图片中的像素点,图片里的某个像素的强度值介于0-1之间。
在这里插入图片描述


#vitis 量化到dpu中的例子
'''
Create & train a custom cnn model for Mnist classication
Tensorflow 2.3
Author: chao.zhang
'''

import os

# Silence TensorFlow messages
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'

import tensorflow as tf
import tensorflow.keras as keras
import tensorflow.keras.layers as layers
from load_data import get_mnist_dataset

MODEL_DIR = './models'
FLOAT_MODEL = 'float_model.h5'

if not os.path.exists(MODEL_DIR):
    os.mkdir(MODEL_DIR)

def customcnn():
    # create a cnn model
    inputs = keras.Input(shape=(28,28,1))  #imput 28*28节点,和输入图片相关
    x = layers.Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1))(inputs)  #Conv2D的32 自己定义。可以修改,只是效果不同
    x = layers.MaxPooling2D((2,2))(x)
    x = layers.Conv2D(64, (3,3), activation='relu')(x)  #64自己定义,多少层也自己定义
    x = layers.MaxPooling2D((2,2))(x)
    x = layers.Conv2D(64, (3,3), activation='relu')(x)
    x = layers.Flatten()(x)  #平摊层
    x = layers.Dense(64, activation='relu')(x)  #全连接层  fc层
    outputs = layers.Dense(10, activation='softmax')(x)   #输出10个神经元,预测10个数字

    model = keras.Model(inputs=inputs, outputs=outputs, name='mnist_customcnn_model')
    model.summary()

    # Compile the model
    model.compile(optimizer="rmsprop", 
            loss="categorical_crossentropy",
            metrics=['accuracy']
            )

    return model

# get Mnist dataset
print("\nLoad Mnist dataset..")
(train_dataset, val_dataset, test_dataset) = get_mnist_dataset(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值