# coding structure of gaussian noise layer

조회 수: 15(최근 30일)
jianY xu 18 Sep 2018
답변: Jack Xiao 22 Feb 2021
I want to create a special layer to add some special noise to the data.
But my matlab version is 2017b, I don't have the example " gaussianNoiseLayer.m".
That file should be located at (matlabroot, 'examples', 'nnet', 'main', 'gaussianNoiseLayer.m') in the matlab 2018b or 2018a version.
I really want to know the coding structure of adding noise layer.
If any kind-hearted person has installed the latest version of matlab, can you send a copy of this file to me?
email: xjy1236@sina.com thank you very much！！
##### 댓글 수: 1표시숨기기 없음
MAHSA YOUSEFI 4 Jan 2021
Hi Jian.
Did you solve your problem with adding noise?
I want to add Gaussian noide per each layer of hidden layer and input in my costumized training loop.

댓글을 달려면 로그인하십시오.

### 답변(1개)

Jack Xiao 22 Feb 2021
here is the code:
classdef gaussianNoiseLayer < nnet.layer.Layer
% gaussianNoiseLayer Gaussian noise layer
% A Gaussian noise layer adds random Gaussian noise to the input.
%
% To create a Gaussian noise layer, use
% layer = gaussianNoiseLayer(sigma, name)
properties
% Standard deviation.
Sigma
end
methods
function layer = gaussianNoiseLayer(sigma, name)
% layer = gaussianNoiseLayer(sigma,name) creates a Gaussian
% noise layer and specifies the standard deviation and layer
% name.
layer.Name = name;
layer.Description = ...
"Gaussian noise with standard deviation " + sigma;
layer.Type = "Gaussian Noise";
layer.Sigma = sigma;
end
function Z = predict(layer, X)
% Z = predict(layer, X) forwards the input data X through the
% layer for prediction and outputs the result Z.
% At prediction time, the output is equal to the input.
Z = X;
end
function [Z, memory] = forward(layer, X)
% Z = forward(layer, X) forwards the input data X through the
% layer and outputs the result Z.
% At training time, the layer adds Gaussian noise to the input.
sigma = layer.Sigma;
noise = randn(size(X)) * sigma;
Z = X + noise;
memory = [];
end
function dLdX = backward(layer, X, Z, dLdZ, memory)
% [dLdX, dLdAlpha] = backward(layer, X, Z, dLdZ, memory)
% backward propagates the derivative of the loss function
% through the layer.
% Since the layer adds a random constant, the derivative dLdX
% is equal to dLdZ.
dLdX = dLdZ;
end
end
end

댓글을 달려면 로그인하십시오.

R2018b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by