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

deep learning from scratch (6.2) :

《深度学习入门:基于Python理论的实现》书中的代码由于设置了横轴的范围plt.hist(a.flatten(), 30,range(0,1)。有些图是不全的,以下的图是去掉range(0,1)之后的图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
relu-std=0.01-初始化-偏向性大
在这里插入图片描述
relu-xavier-初始化-偏向性
在这里插入图片描述
relu-He-初始化-无偏向性
在这里插入图片描述
sigmoid -xavier初始化
在这里插入图片描述
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()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值