使用Java实现
/**
* PReLU层
*
* @author xiaocheng
*
*/
public class PReLU {
public PReLU() {
}
public double[] out(double[] x) {
double[] out = new double[x.length];
for (int i = 0; i < x.length; i++) {
out[i] = PReLUF(x[i]);
}
return out;
}
private double PReLUF(double x) {
if (x < 0)
return x * 0.25f;
return x;
}
}
测试
public class Welcome {
public static void main(String[] args) {
double[] x = { -10, 7, 3 };
PReLU sigmoid = new PReLU();
double[] out1 = sigmoid.out(x);
System.out.println(out1[0] + " " + out1[1] + " " + out1[2]);
}
}
运行结果
-2.5 7.0 3.0
使用Pytorch实现
import torch as t
input=t.tensor([-10,7,3],dtype=t.float32)
prelu=t.nn.PReLU()
print(prelu(input))
运行结果
H:\ProgramData\Anaconda3\python.exe D:/PycharmProjects/untitled3/test.py
tensor([-2.5000, 7.0000, 3.0000], grad_fn=<PreluBackward>)
Process finished with exit code 0
结果相同,达到目标