relu-sigmoid-xavier-He-初始化-偏向性-图

deep learning from scratch (6.2) :

《深度学习入门:基于Python理论的实现》书中的代码由于设置了横轴的范围plt.hist(a.flatten(), 30,range(0,1)。有些图是不全的,以下的图是去掉range(0,1)之后的图
relu-sigmoid-xavier-He-初始化-偏向性-图_第1张图片
relu-sigmoid-xavier-He-初始化-偏向性-图_第2张图片
relu-sigmoid-xavier-He-初始化-偏向性-图_第3张图片
relu-std=0.01-初始化-偏向性大
relu-sigmoid-xavier-He-初始化-偏向性-图_第4张图片
relu-xavier-初始化-偏向性
relu-sigmoid-xavier-He-初始化-偏向性-图_第5张图片
relu-He-初始化-无偏向性
relu-sigmoid-xavier-He-初始化-偏向性-图_第6张图片
sigmoid -xavier初始化
relu-sigmoid-xavier-He-初始化-偏向性-图_第7张图片
sigmoid-He初始化

相关代码

# -*- coding: utf-8 -*-
"""
Created on Tue Oct 15 11:54:48 2019

@author: qy
"""
import numpy as np
import matplotlib.pyplot as plt


def sigmoid(x):
    return 1 / (1 + np.exp(-x))


def ReLU(x):
    return np.maximum(0, x)


def tanh(x):
    return np.tanh(x)
    
input_data = np.random.randn(1000, 100)  # 1000個のデータ # 1000个数据
node_num = 100  # 各隠れ層のノード(ニューロン)の数 # 各隐藏层的节点(神经元)数
hidden_layer_size = 5  # 隠れ層が5層 隐藏层有五层
activations = {}  # ここにアクティベーションの結果を格納する 激活值的结果保留在这里

x = input_data 

for i in range(hidden_layer_size):
    if i != 0:
        x = activations[i-1]

    # 初期値の値をいろいろ変えて実験しよう! 
    #w = np.random.randn(node_num, node_num) * 0.01
    #w = np.random.randn(node_num, node_num) * 1
    #w = np.random.randn(node_num, node_num) * np.sqrt(1/node_num)
    w = np.random.randn(node_num, node_num) * np.sqrt(2.0 / node_num)


    a = np.dot(x, w)


    # 活性化関数の種類も変えて実験しよう!
    #z = sigmoid(a)
    z = ReLU(a)
    #z = tanh(a)

    activations[i] = z

# ヒストグラムを描画
for i, a in activations.items():
    plt.subplot( 1,len(activations), i+1)
    plt.title(str(i+1) + "-layer")
    if i != 0: plt.yticks([], [])
    # plt.xlim(0.1, 1)
    # plt.ylim(0, 7000)
    plt.hist(a.flatten(), 30)
plt.show()

你可能感兴趣的:(深度学习)