快速入门Django(结合深度学习DNN实例)

本文介绍了如何使用Keras创建一个DNN深度学习模型,解决IRIS数据集的多分类问题,并展示了如何在Django框架下保存、加载模型。通过views.py、models.py和urls.py的配置,将预测结果存入数据库,并在网页展示。项目适合Django和深度学习初学者,虽然存在一些粗糙之处,但能快速看到实际效果。
摘要由CSDN通过智能技术生成

在熟悉了简单操作后,做一点有意思的事情吧

本文实现的功能:
1.使用Keras创建,DNN深度学习网络模型,解决多分类问题,数据集是IRIS数据集。
2.Keras模型保存,及重新加载
2.结合我的上一篇文章的结果,最终实现了,由网页写入data,将data传入已经训练好的模型,predict结果输入数据库,最终将predict显示在网页。

此篇project非常适合入门,能够快速看到结果,但某些细节好比较粗糙,有待完善。欢迎指正与交流。

参考的博客,但调试时有很多bug,自己做了些改动,此处附上原博客链接:
是https://www.jianshu.com/p/1d88a6ed707e

OK

1.Keras创建DNN深度学习网络模型

前期准备

如果想用在你的电脑上使用Keras,需要以下工具:

Python
TensorFlow
Keras

这里,选择TensorFlow作为Keras的后端工具。使用以下Python代码,可以输出Python、TensorFlow以及Keras的版本号:

import sys
import keras as K
import tensorflow as tf

py_ver = sys.version
k_ver = K.__version__
tf_ver = tf.__version__

print("Using Python version " + str(py_ver))
print("Using Keras version " + str(k_ver))
print("Using TensorFlow version " + str(tf_ver))

OK

IRIS数据集

IRIS数据集(鸢尾花数据集),经典的机器学习数据集,适合作为多分类问题的测试数据。
IRIS数据集是用来给鸢尾花做分类的数据集,一共150个样本,每个样本包含了花萼长度(sepal length in cm)、花萼宽度(sepal width in cm)、花瓣长度(petal length in cm)、花瓣宽度(petal width in cm)四个特征,将鸢尾花分为三类,分别为Iris Setosa,Iris Versicolour,Iris Virginica,每一类都有50个样本。

DNN代码

DNN结构:
搭建的DNN由输入层、隐藏层、输出层和softmax函数组成,其中输入层由4个神经元组成,对应IRIS数据集中的4个特征,作为输入向量。
隐藏层有两层,每层分别有5和6个神经元。
之后就是输出层,由3个神经元组成,对应IRIS数据集的目标变量的类别个数。
最后,就是一个softmax函数,用于解决多分类问题而创建。

直接上代码:

# 导入模块
import os
import numpy as np
import keras as K
import tensorflow as tf
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelBinarizer
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

#from keras.models import load_model
from keras.models import load_model as keras_load_model

# 读取CSV数据集,并拆分为训练集和测试集
# 该函数的传入参数为CSV_FILE_PATH: csv文件路径
def load_data(CSV_FILE_PATH):
    IRIS = pd.read_csv(CSV_FILE_PATH)
    target_var = 'Species'  # 目标变量
    # 数据集的特征
    features = list(IRIS.columns[1:6])
    
    features.remove(target_var)
    # 目标变量的类别
    Class = IRIS[target_var].unique()
    # 目标变量的类别字典
    Class_dict = dict(zip(Class, range(len(Class))))
    # 增加一列target, 将目标变量进行编码
    IRIS['target'] = IRIS[target_var].apply(lambda x: Class_dict[x])
    # 对目标变量进行0-1编码(One-hot Encoding)
    lb = LabelBinarizer()
    lb.fit(list(Class_dict.values()))
    transformed_labels = lb.transform(IRIS['target'])
    y_bin_labels = []  # 对多分类进行0-1编码的变量
    for i in 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值