python构建深度神经网络(DNN)续

这篇文章在前一篇文章:python构建深度神经网络(DNN)的基础上,添加了一下几个内容:

1) 正则化项

2) 调出中间损失函数的输出

3) 构建了交叉损失函数

4) 将训练好的网络进行保存,并调用用来测试新数据


1  数据预处理

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2017-03-12 15:11
# @Author  : CC
# @File    : net_load_data.py

from numpy import *
import numpy as np
import cPickle
def load_data():
    """载入解压后的数据,并读取"""
    with open('data/mnist_pkl/mnist.pkl','rb') as f:
        try:
            train_data,validation_data,test_data = cPickle.load(f)
            print " the file open sucessfully"
            # print train_data[0].shape  #(50000,784)
            # print train_data[1].shape   #(50000,)
            return (train_data,validation_data,test_data)
        except EOFError:
            print 'the file open error'
            return None

def data_transform():
    """将数据转化为计算格式"""
    t_d,va_d,te_d = load_data()
    # print t_d[0].shape  # (50000,784)
    # print te_d[0].shape  # (10000,784)
    # print va_d[0].shape  # (10000,784)
    # n1 = [np.reshape(x,784,1) for x in t_d[0]] # 将5万个数据分别逐个取出化成(784,1),逐个排列
    n = [np.reshape(x, (784, 1)) for x in t_d[0]]  # 将5万个数据分别逐个取出化成(784,1),逐个排列
    # print 'n1',n1[0].shape
    # print 'n',n[0].shape
    m = [vectors(y) for y in t_d[1]] # 将5万标签(50000,1)化为(10,50000)
    train_data = zip(n,m)  # 将数据与标签打包成元组形式
    n = [np.reshape(x, (784, 1)) for x in va_d[0]]  # 将5万个数据分别逐个取出化成(784,1),排列
    validation_data = zip(n,va_d[1])   # 没有将标签数据矢量化
    n = [np.reshape(x, (784, 1)) for x in te_d[0]]  # 将5万个数据分别逐个取出化成(784,1),排列
    test_data = zip(n, te_d[1])  # 没有将标签数据矢量化
    # print train_data[0][0].shape  #(784,)
    # print "len(train_data[0])",len(train_data[0]) #2
    # print "len(train_data[100])",len(train_data[100]) #2
    # print "len(train_data[0][0])", len(train_data[0][0]) #784
    # print "train_data[0][0].shape", train_data[0][0].shape #(784,1)
    # print "len(train_data)", len(train_data)  #50000
    # print train_data[0][1].shape  #(10,1)
    # print test_data[0][1] # 7
    return (tra
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值