relu

How do you use Keras LeakyReLU in Python?

匿名 (未验证) 提交于 2019-12-03 01:38:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I am trying to produce a CNN using Keras, and wrote the following code: batch_size = 64 epochs = 20 num_classes = 5 cnn_model = Sequential() cnn_model.add(Conv2D(32, kernel_size=(3, 3), activation='linear', input_shape=(380, 380, 1), padding='same')) cnn_model.add(Activation('relu')) cnn_model.add(MaxPooling2D((2, 2), padding='same')) cnn_model.add(Conv2D(64, (3, 3), activation='linear', padding='same')) cnn_model.add(Activation('relu')) cnn_model.add(MaxPooling2D(pool_size=(2, 2), padding='same')) cnn_model.add(Conv2D(128, (3, 3),

ReLU derivative with NumPy

匿名 (未验证) 提交于 2019-12-03 01:34:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: import numpy as np def relu(z): return np.maximum(0,z) def d_relu(z): z[z>0]=1 z[z<=0]=0 return z x=np.array([5,1,-4,0]) y=relu(x) z=d_relu(y) print("y = {}".format(y)) print("z = {}".format(z)) The code above prints out: y = [1 1 0 0] z = [1 1 0 0] instead of y = [5 1 0 0] z = [1 1 0 0] From what I understand the function calls I've used should only be doing passing by value,passing a copy of the variable. Why is my d_relu function affecting the y variable? 回答1: Your first mistake is in assuming python passes objects by value... it doesn't

AttributeError: &#039;NoneType&#039; object has no attribute &#039;_inbound_nodes&#039; while trying to add multiple keras Dense layers

匿名 (未验证) 提交于 2019-12-03 01:27:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: The input are 3 independent channels of 1000 features. I'm trying to pass each channel through a independent NN path, then concatenate them into a flat layer. Then apply a FCN on the flatten layer for a binary classification. I'm trying to add multiple Dense layers together, like this: def tst_1(): inputs = Input((3, 1000, 1)) dense10 = Dense(224, activation='relu')(inputs[0,:,1]) dense11 = Dense(112, activation='relu')(dense10) dense12 = Dense(56, activation='relu')(dense11) dense20 = Dense(224, activation='relu')(inputs[1,:,1]) dense21 =

tf.layers.batch_normalization large test error

匿名 (未验证) 提交于 2019-12-03 01:27:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 由 翻译 强力驱动 问题: I'm trying to use batch normalization. I tried to use tf.layers.batch_normalization on a simple conv net for mnist. I get high accuracy for train step (>98%) but very low test accuracy ( my code # Input placeholders x = tf . placeholder ( tf . float32 , [ None , 784 ], name = 'x-input' ) y_ = tf . placeholder ( tf . float32 , [ None , 10 ], name = 'y-input' ) is_training = tf . placeholder ( tf . bool ) # inut layer input_layer = tf . reshape ( x , [- 1 , 28 , 28 , 1 ]) with tf . name_scope ( 'conv1' ): #Convlution #1 ([5,5] :

Keras ValueError: ValueError: Error when checking target: expected dense_4 to have shape (None, 2) but got array with shape (2592, 1) Python3

匿名 (未验证) 提交于 2019-12-03 01:20:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I am having an issue when trying to train my model in Keras 2.0.8, Python 3.6.1, and a Tensorflow Backend. Error Message: ValueError: Error when checking target: expected dense_4 to have shape (None, 2) but got array with shape (2592, 1) X_train = numpy.swapaxes(X_train, 1, 3) X_test = numpy.swapaxes(X_test, 1, 3) print("X_train shape: ") --> size = (2592, 1, 1366, 96) print("-----") print("X_test shape") --> size = (648, 1, 1366, 96) print("-----") print(Y_train.shape) --> size = (2592,) print("-----") print("Y_test shape") --> size = (648,

Keras中CNN联合LSTM进行分类

匿名 (未验证) 提交于 2019-12-03 00:37:01
def get_model(): n_classes = 6 inp=Input(shape=(40, 80)) reshape=Reshape((1,40,80))(inp) # pre=ZeroPadding2D(padding=(1, 1))(reshape) # 1 conv1=Convolution2D(32, 3, 3, border_mode='same',init='glorot_uniform')(reshape) #model.add(Activation('relu')) l1=LeakyReLU(alpha=0.33)(conv1) conv2=ZeroPadding2D(padding=(1, 1))(l1) conv2=Convolution2D(32, 3, 3, border_mode='same',init='glorot_uniform')(conv2) #model.add(Activation('relu')) l2=LeakyReLU(alpha=0.33)(conv2) m2=MaxPooling2D((3, 3), strides=(3, 3))(l2) d2=Dropout(0.25)(m2) # 2 conv3=ZeroPadding2D(padding=(1, 1))(d2) conv3=Convolution2D(64, 3,

深度学习最佳实践系列――权重w初始化

匿名 (未验证) 提交于 2019-12-03 00:36:02
摘要: 本文是深度学习最佳实践系列博客之权重初始化,主要介绍权重初始化的相关问题及方法,文中提及的权重初始化方法均可以应用于普通的神经网络、卷积神经网络和递归神经网络之中。 推荐这门课程 。 基础和符号 1.初始化权重和偏置 。 2.前向传播(forward propagation) :使用输入X,权重W和偏置b,对于每一层计算Z和A。在最后一层中,计算f(A ^(L-1)),它可能会是S形函数softmax或线性函数的A ^(L-1),并得到预测值y_hat。 3.计算损失函数(loss function) :该函数是理想标签y和预测标签y_hat二者的函数,它表明预测值离实际目标值有多大差距,训练神经网络模型的目的就是要尽量减少损失函数的值。 4.反向传播(back propagation) :在这一过程中,需要计算损失函数f(y,y_hat)相对于A、W和b的梯度,分别称为dA、dW和db。使用这些梯度值,将参数的值从最后一层反向更新到第一层。 5.对n次迭代重复步骤2-4 ,直到我们觉得已经最小化了损失函数,且没有过拟合训练数据时则表明训练结束。 前向传播 反向传播 权重W初始化 1.将所有权重初始化为0 2.随机初始化权重 a)梯度消失 ――对于深度网络,任何激活函数abs(dW)值将随着反向传播过程中每一层向后移动而变得越来越小。在这种情况下,较早的层次变化是最慢的。

深度学习剖根问底:梯度消失以及爆炸

匿名 (未验证) 提交于 2019-12-03 00:36:02
转载自:https://blog.csdn.net/qq_25737169/article/details/78847691 前言 其中,梯度消失爆炸的解决方案主要包括以下几个部分。 - 预训练加微调 - 梯度剪切、权重正则(针对梯度爆炸) - 使用不同的激活函数 - 使用batchnorm - 使用残差结构 - 使用LSTM网络 第一部分:为什么要使用梯度更新规则 我们最终的目的是希望这个多元函数可以很好的完成输入到输出之间的映射,假设不同的输入,输出的最优解是 取得极小值点,比如最简单的损失函数 第二部分:梯度消失、爆炸 梯度消失与梯度爆炸其实是一种情况,看接下来的文章就知道了。两种情况下梯度消失经常出现,一是在 深层网络 中,二是采用了 不合适的损失函数 ,比如sigmoid。梯度爆炸一般出现在深层网络和 权值初始化值太大 的情况下,下面分别从这两个角度分析梯度消失和爆炸的原因。 1.深层网络角度 图中的曲线表示权值更新的速度,对于下图两个隐层的网络来说,已经可以发现隐藏层2的权值更新速度要比隐藏层1更新的速度慢 那么对于四个隐层的网络来说,就更明显了,第四隐藏层比第一隐藏层的更新速度慢了两个数量级: 总结: 从深层网络角度来讲,不同的层学习的速度差异很大,表现为网络中靠近输出的层学习的情况很好,靠近输入的层学习的很慢,有时甚至训练了很久

如何选取激活函数

匿名 (未验证) 提交于 2019-12-03 00:30:01
不是所有信息都是有用的,一些只是噪音。激活函数可以帮助神经网络做这种隔离。它激活有用的信息,并抑制无关的数据点。 激活函数有哪些: 1. Sigmoid函数 适用于: 当我们尝试将值分类到特定的类时,使用Sigmoid函数非常理想。 2. tanh函数 解决了sigmoid的大多数缺点,仍然有两边学习率太低的缺点 3. ReLU函数 优点:不会同时激活所有的神经元, 这意味着,在一段时间内,只有少量的神经元被激活,神经网络的这种稀疏性使其变得高效且易于计算。 缺点: x<0时,梯度是零。随着训练的进行,可能会出现神经元死亡,权重无法更新的情况。也就是说,ReLU神经元在训练中不可逆地死亡了。 4. Leaky ReLU函数 解决了RELU死神经元的问题 5. Softmax函数 优点:可以处理多分类问题。 softmax函数最好在分类器的输出层使用。 更多激活函数,参见参考文献4...... 如何选择正确的激活函数? 根据问题的性质,我们可以为神经网络更快更方便地收敛作出更好的选择。 用于分类器时,Sigmoid函数及其组合通常效果更好。 由于梯度消失问题,有时要避免使用sigmoid和tanh函数。 ReLU函数是一个通用的激活函数,目前在大多数情况下使用。 如果神经网络中出现死神经元,那么PReLU函数就是最好的选择。 请记住,ReLU函数只能在隐藏层中使用。 一点经验

Pytorch实现手写数字mnist识别

匿名 (未验证) 提交于 2019-12-03 00:29:01
import torch import torchvision as tv import torchvision.transforms as transforms import torch.nn as nn import torch.optim as optim import argparse # 定义是否使用GPU device = torch.device( "cuda" if torch.cuda.is_available() else "cpu" ) # 定义网络结构 class LeNet (nn.Module) : def __init__ (self) : super(LeNet, self).__init__() self.conv1 = nn.Sequential( #input_size=(1*28*28) nn.Conv2d( 1 , 6 , 5 , 1 , 2 ), #padding=2保证输入输出尺寸相同 nn.ReLU(), #input_size=(6*28*28) nn.MaxPool2d(kernel_size= 2 , stride= 2 ), #output_size=(6*14*14) ) self.conv2 = nn.Sequential( nn.Conv2d( 6 , 16 , 5 ), nn.ReLU(), #input_size=