MNIST3_tf2.keras训练预测

针对MNIST数据集进行j基于tf2.keras的nn模型训练和预测
部分脚本如下: 完整脚本见笔者github

import pandas as pd 
import numpy as np
import tensorflow as tf
from tensorflow.keras import layers, Sequential, regularizers, Model
from utils.utils_tools import clock, get_ministdata
import warnings
warnings.filterwarnings(action='ignore')


class MyModel(Model):
    def __init__(self):
        super(MyModel, self).__init__()
        self.fc0 = layers.Dense(256, activation='relu')
        self.bn1 = layers.BatchNormalization()
        self.fc1 = layers.Dense(32, activation='relu', kernel_regularizer = regularizers.l2(0.06))
        self.bn2 = layers.BatchNormalization()
        self.fc2 = layers.Dense(10, activation='sigmoid')

    def call(self, inputs_, training=None):
        x = self.fc0(inputs_)
        x = self.bn1(x)
        x = self.fc1(x)
        x = self.bn2(x)
        return self.fc2(x)



def build_nnmodel(input_shape=(None, 784)):
    nnmodel = MyModel()
    nnmodel.build(input_shape=input_shape)
    nnmodel.compile(
        loss='categorical_crossentropy',
        optimizer = 'adam',
        metrics = ['accuracy']
    )
    return nnmodel

if __name__ == '__main__':
    mnistdf = get_ministdata()
    te_index = mnistdf.sample(frac=0.75).index.tolist()
    mnist_te = mnistdf.loc[te_index, :]
    mnist_tr = mnistdf.loc[~mnistdf.index.isin(te_index), :]
    mnist_tr_x, mnist_tr_y = mnist_tr.iloc[:, :-1].values, tf.keras.utils.to_categorical(mnist_tr.iloc[:, -1].values)
    mnist_te_x, mnist_te_y = mnist_te.iloc[:, :-1].values, tf.keras.utils.to_categorical(mnist_te.iloc[:, -1].values)

    nnmodel = build_nnmodel()
    stop = tf.keras.callbacks.EarlyStopping(monitor = 'accuracy', min_delta=0.0001)
    history = nnmodel.fit(mnist_tr_x, mnist_tr_y
                        ,validation_data = (mnist_te_x, mnist_te_y)
                        ,epochs=10
                        ,callbacks = [stop])
    acc_final = round(max(history.history['accuracy']), 2)

    print(f"acc:{acc_final:.3f}")
    predict_ = np.argmax(nnmodel.predict(mnist_te_x), axis=1)
    te_y = np.argmax(mnist_te_y, axis=1)
    print(predict_)
    print(te_y)
    print(f'auc: {sum(predict_ == te_y)/te_y.shape[0]:.3f}')
"""
14000/14000 [==============================] - 10s 741us/sample - loss: 0.1472 - accuracy: 0.9730 - val_loss: 0.2162 - val_accuracy: 0.9557
Epoch 9/10
13952/14000 [============================>.] - ETA: 0s - loss: 0.1520 - accuracy: 0.9720
Epoch 00009: accuracy did not improve from 0.97300
14000/14000 [==============================] - 23s 2ms/sample - loss: 0.1522 - accuracy: 0.9719 - val_loss: 0.2390 - val_accuracy: 0.9506
acc:0.970
[2 2 8 ... 7 6 6]
[2 2 8 ... 7 6 6]
auc: 0.951, cost: 170.946

"""


99元秒杀!每天前100人再送5门编程课! AI+5门300元课程+讲师社群答疑+社群闭门分享会=99元 源码开源下载:https://github.com/DjangoPeng/keras-101/tree/master/code_samples 【为什么学AI】 归功于近年来大规模数据和硬件计算能力的大幅度提升,人工智能的概念近两年一直是市场追捧的对象。目前各大厂都争先恐后地布局AI,落地各类AI的的商业应用,也随之打响了一场激烈的人才争夺战。长远来看,越快将 AI 用于自己的工作中就能越早体会到AI带来的收益。 【讲师介绍】 彭靖田 Google Developer Experts。 曾为 TensorFlow Top级 的贡献者,著书《深入理解TensorFlow》,是国内第一本深度剖析 Google AI 框架的畅销书。 曾从0到1深入参与了华为 2012 实验室深度学习平台和华为深度学习云服务的设计与研发工作。 【课程设计】 课程内容基于最新的Keras版本(你也可以使用 TensorFlow 2 的 tf.keras 模块),其中有大量独家解读、案例,以及不少讲师一线实战多年的方法论和深度思考。同时,在层次划分上,难易兼顾,循序渐进。既有核心的基础知识,也有高级的进阶操作,尽量做到“老少皆宜”。 课程分为基础篇、入门篇和实战篇: 一、基础篇: 主要讲解人工智能发展史和深度学习脱颖而出的原由,以及神经网络的基础概念、理论实现、优化原理和计算方法。 二、入门篇: 主攻快速上手,通过7个小节让你从0到1实现环境搭建、模型优化,直接试水2个实战项目。同时,增强AI的理论学习,系统掌握机器学习3大分支、模型评估方法、数据预处理常用手段与过拟合问题的解决方案。 三、实战篇: 通过4个实战全面掌握深度学习理论与实现,涵盖目标检测、图像分类、可视化和可解释性学习、迁移学习、特征提取、数据增强等。带你综合运用前面所学的所有知识,逐渐熟练AI开发流程与技能。 课程包含思维导图上的所有内容(价值199元)前500名立减100元,仅99元买完就能学!
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页