DNN一共可以分为三层。
输入层(input layer)
隐藏层(hidden layer)
输出层(output layer)
DNN的前向传播即由输入经过一些列激活函数得到最终的输出
在对DNN参数求解的时候,通过反向传播,以及链式法则求得。
二、Tensorflow下的DNN实现 1、实现功能简介:本文摘自Kaggle的一篇房价预测题目,找了一篇比较全的,当作自己的Tensorflow入门。链接:
https://www.kaggle.com/zoupet/neural-network-model-for-house-prices-tensorflow
数据和题目可以在文章开头的地址找的。
主要是给定了一个区域的房子价格以及房子特征,要预测一下房价。
2、挑选数据1 # 为了使得代码在 python2 或者3下都运行,加的 __future__包。如果是python3,下面的包可以不加。 2 from __future__ import absolute_import 3 from __future__ import division 4 from __future__ import print_function 5 6 import itertools 7 8 import pandas as pd 9 import numpy as np 10 import matplotlib.pyplot as plt 11 from pylab import rcParams 12 import matplotlib 13 14 from sklearn.model_selection import train_test_split 15 16 # scaler, put the value range from min to max 17 from sklearn.preprocessing import MinMaxScaler 18 19 import tensorflow as tf 20 21 # 定义多少条记录会被当作log。 22 tf.logging.set_verbosity(tf.logging.INFO) 23 24 # InteractiveSession 与 Session的区别是不用每一次执行命令时,前面都加一个session。可以自己查一下 25 sess = tf.InteractiveSession() 26 27 # 文件目录 28 path_train = \'/Users/adrian.wu/Desktop/learn/kaggle/price/data/all/train.csv\' 29 30 \'\'\' 31 首先只用数字特征进行预测,去除掉其它特征,比如类别等 32 \'\'\' 33 train = pd.read_csv(path_train) 34 35 print(\'所有特征下,矩阵纬度:\', train.shape) 36 37 # 挑选出只是数字类型的特征 38 train = train.select_dtypes(exclude=[\'object\']) 39 print(\'数字类型特征矩阵的纬度:\', train.shape) 40 41 # 去掉没用的特征Id 42 train.drop(\'Id\', axis=1, inplace=True) 43 44 # 处理缺失值,简单的填充0 45 train.fillna(0, inplace=True) 46 47 print("\n特征:", list(train.columns)) 48 49 \'\'\' 50 用Isolation Forest去掉异常值 51 \'\'\' 52 from sklearn.ensemble import IsolationForest 53 54 clf = IsolationForest(max_samples=100, random_state=42) 55 clf.fit(train) 56 57 y_noano = clf.predict(train) 58 print(y_noano) 59 y_noano = pd.DataFrame(y_noano, columns=[\'Top\']) 60 # y_noano[y_noano[\'Top\'] == 1].index.values, 等于1的不是异常值,-1为异常值 61 62 train = train.iloc[y_noano[y_noano[\'Top\'] == 1].index.values] 63 train.reset_index(drop=True, inplace=True) 64 65 print("异常值数量:", y_noano[y_noano[\'Top\'] == -1].shape[0]) 66 print("正常数据数量:", train.shape[0])