标签: relu

当使用 .clamp 而不是 torch.relu 时,Pytorch Autograd 会给出不同的渐变

我仍在努力理解 PyTorch autograd 系统。我正在努力解决的一件事是理解为什么.clamp(min=0)并且nn.functional.relu()似乎有不同的向后传球。

它特别令人困惑,因为它.clampreluPyTorch 教程中的等效用法相同,例如https://pytorch.org/tutorials/beginner/pytorch_with_examples.html#pytorch-nn

我在分析具有一个隐藏层和 relu 激活(输出层中的线性)的简单全连接网络的梯度时发现了这一点。

据我了解,以下代码的输出应该只是零。我希望有人能告诉我我缺少什么。

import torch
dtype = torch.float

x = torch.tensor([[3,2,1],
                  [1,0,2],
                  [4,1,2],
                  [0,0,1]], dtype=dtype)

y = torch.ones(4,4)

w1_a = torch.tensor([[1,2],
                     [0,1],
                     [4,0]], dtype=dtype, requires_grad=True)
w1_b = w1_a.clone().detach()
w1_b.requires_grad = True



w2_a = torch.tensor([[-1, 1],
                     [-2, 3]], dtype=dtype, requires_grad=True)
w2_b = w2_a.clone().detach()
w2_b.requires_grad = True


y_hat_a = torch.nn.functional.relu(x.mm(w1_a)).mm(w2_a)
y_a = torch.ones_like(y_hat_a)
y_hat_b = x.mm(w1_b).clamp(min=0).mm(w2_b)
y_b = torch.ones_like(y_hat_b)

loss_a = (y_hat_a - y_a).pow(2).sum()
loss_b …
Run Code Online (Sandbox Code Playgroud)

python backpropagation pytorch autograd relu

8
推荐指数
1
解决办法
1415
查看次数

cv2.dnn.readNetFromDarknet 错误:(-212:解析错误)不支持的激活:函数“cv::dnn::darknet::ReadDarknetFromCfgStream”中的relu

我尝试使用从这个地方下载的权重和 cfg 在暗网上运行 Openpose:https : //github.com/lincolnhard/openpose-darknet

这是我尝试在 Opencv 中创建网络时出现的错误

modelConfiguration = path to cfg file
modelWeights = path to weights file
darknet = cv2.dnn.readNetFromDarknet(modelConfiguration, modelWeights)
Run Code Online (Sandbox Code Playgroud)

() 中的错误回溯(最近一次调用)----> 1 暗网 = cv2.dnn.readNetFromDarknet(modelConfiguration, modelWeights)

错误: OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\dnn\src\darknet\darknet_io.cpp:552: 错误: (-212:Parsing error) 不支持的激活: relu in function 'cv ::dnn::darknet::ReadDarknetFromCfgStream'

opencv darknet yolo relu

6
推荐指数
1
解决办法
6423
查看次数

为什么在神经网络类定义中使用多个 ReLU 对象?

最近我观察到,在定义神经网络时,我们很多时候为每一层定义单独的 ReLU 对象。为什么我们不能在需要的地方使用相同的 ReLU 对象。

例如,不要这样写-

def __init__(self):
    self.fc1     = nn.Linear(784, 500)
    self.ReLU_1  = nn.ReLU()
    self.fc2     = nn.Linear(500, 300)
    self.ReLU_2  = nn.ReLU()
    
def forward(x):
    x = self.fc1(x)
    x = self.ReLU_1(x)
    x = self.fc2(x)
    x = self.ReLU_2(x)

Run Code Online (Sandbox Code Playgroud)

为什么我们不能使用

def __init__(self):
    self.fc1    = nn.Linear(784, 500)
    self.ReLU   = nn.ReLU()
    self.fc2    = nn.Linear(500, 300)
    
def forward(x):
    x = self.fc1(x)
    x = self.ReLU(x)
    x = self.fc2(x)
    x = self.ReLU(x)

Run Code Online (Sandbox Code Playgroud)

这是 PyTorch 特有的东西吗?

neural-network pytorch relu

5
推荐指数
1
解决办法
676
查看次数

ReLU衍生物与NumPy

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))
Run Code Online (Sandbox Code Playgroud)

上面的代码输出:

y = [1 1 0 0]
z = [1 1 0 0]
Run Code Online (Sandbox Code Playgroud)

代替

y = [5 1 0 0]
z = [1 1 0 0]
Run Code Online (Sandbox Code Playgroud)

据我了解,我使用过的函数调用只应该按值传递,传递变量的副本。

为什么我的d_relu函数会影响y变量?

python arrays numpy activation-function relu

3
推荐指数
1
解决办法
2191
查看次数

如何使用Numpy函数实现泄漏的relu

我正在尝试实现泄漏的Relu,问题是我必须对4维输入数组进行4 for循环。

有没有一种方法可以仅使用Numpy函数来进行泄漏的解析?

numpy activation-function relu

2
推荐指数
1
解决办法
2373
查看次数

为什么ReLU是非线性激活功能?

据我了解,在深度神经网络中,我们在应用权重(w)和偏差(b)后使用激活函数(g)(z := w * X + b | a := g(z)).因此有一个组合函数(g o z)和激活函数使得我们的模型可以学习除线性函数之外的函数.我看到Sigmoid和Tanh激活函数使我们的模型非线性,但是我看到ReLu(它取0和z的最大值)可以使模型非线性...

假设每个Z都是正数,那就好像没有激活函数......

所以我的问题是为什么ReLu在神经网络中制作非线性模型?

machine-learning neural-network deep-learning activation-function relu

2
推荐指数
1
解决办法
1257
查看次数

由于“未知的激活函数:LeakyReLU”而无法加载模型

我已经构建、安装并保存了以下模型:

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras import preprocessing
from tensorflow.keras.models import Sequential
import config
from tensorflow.keras import applications  

model = Sequential()  
model.add(layers.Flatten(input_shape=input_shape.shape[1:]))  
model.add(layers.Dense(100, activation=keras.layers.LeakyReLU(alpha=0.3)))  
model.add(layers.Dropout(0.5))  
model.add(layers.Dense(50, activation=keras.layers.LeakyReLU(alpha=0.3)))  
model.add(layers.Dropout(0.3)) 
model.add(layers.Dense(num_classes, activation='softmax'))
Run Code Online (Sandbox Code Playgroud)

我正在使用 load_model 函数进行评估,到目前为止我还没有遇到任何问题,但我现在收到以下错误:

ValueError: Unknown activation function: LeakyReLU
Run Code Online (Sandbox Code Playgroud)

我应该对架构进行任何语法更改吗?或者这里是否存在更深层次的问题?任何建议将不胜感激,因为我已经尝试设置一些自定义对象,如下所述: https: //github.com/BBQuercus/deepBlink/issues/107

编辑:我在调用 load_model 的文件中导入如下:

import config
import numpy as np
from tensorflow.keras.preprocessing.image import img_to_array, load_img 
from models.create_image_model import make_vgg
import argparse
from tensorflow.keras.models import load_model
import time
from tensorflow import keras …
Run Code Online (Sandbox Code Playgroud)

python neural-network keras tensorflow relu

1
推荐指数
1
解决办法
4370
查看次数