我有一段代码使用Sigmoid激活函数进行分类,以输出[0,1]。但是我需要一个激活函数来输出0或1的二进制值。
x = tf.placeholder("float", [None, COLUMN])
Wh = tf.Variable(tf.random_normal([COLUMN, UNITS_OF_HIDDEN_LAYER], mean=0.0, stddev=0.05))
h = tf.nn.sigmoid(tf.matmul(x, Wh))
Wo = tf.Variable(tf.random_normal([UNITS_OF_HIDDEN_LAYER, COLUMN], mean=0.0, stddev=0.05))
y = tf.nn.sigmoid(tf.matmul(h, Wo))
# Objective functions
y_ = tf.placeholder("float", [None, COLUMN])
correct_prediction = tf.equal(tf.argmax(y, 1),tf.argmax(y, 1))
cost = tf.reduce_sum(tf.cast(correct_prediction, "float"))/BATCH_SIZE
Run Code Online (Sandbox Code Playgroud)
您能告诉我如何用二进制第一步代替Sigmoid函数吗?
我正在使用Python开发Keras,并且有一个神经网络(请参见下面的代码)。目前,它仅适用于ReLu激活。
出于实验原因,我想在ReLu上使用一些神经元,在softmax上使用一些(或其他激活功能)。例如,在具有20个神经元的层中,我希望ReLu拥有10个,Softmax具有10个。
我尝试了一些不同的方法,但始终无法获得输出。
你知道我该怎么做吗?
# - Libraries
from keras.layers import Dense
from keras.models import Sequential
from keras.callbacks import EarlyStopping
early_spotting_monitor = EarlyStopping(patience=2)
layers = 4
neurons = 20
act = "ReLu"
# - Create Neural Network
model = Sequential()
model.add(Dense(neurons,activation=act,input_dim=X_train.shape[1]))
layers -= 1
while layers > 0:
model.add(Dense(neurons,activation=act))
layers -= 1
model.add(Dense(n_months))
model.compile(optimizer="adam",loss="mean_absolute_error")
model.fit(X_train,Y_train,validation_split=0.10,epochs=13,callbacks=[early_spotting_monitor])
Run Code Online (Sandbox Code Playgroud)
编辑:这是我现在的(工作)代码:
# - Libraries
from keras.callbacks import EarlyStopping
early_spotting_monitor = EarlyStopping(patience=2)
from keras.layers import Input, Dense
from keras.models import Model
from keras.layers.merge import concatenate
# input …Run Code Online (Sandbox Code Playgroud) 由于神经网络包没有ReLU函数,所以我尝试编写ReLU函数的代码。但是有一个我不明白的错误。请在下面查看我的代码和错误信息。
relu<-function(x){ifelse(x>=0,x,0)}
nn <- neuralnet(y~a+b+c+d+e+f,data=train,hidden=c(5),linear.output=T,act.fct = relu)
Run Code Online (Sandbox Code Playgroud)
deriv.formula(eval(parse(text = text)), "x", func = eval(parse(text = text2)) 中的错误:函数‘ifelse’不在导数表中
我正在尝试实现泄漏的Relu,问题是我必须对4维输入数组进行4 for循环。
有没有一种方法可以仅使用Numpy函数来进行泄漏的解析?
据我了解,在深度神经网络中,我们在应用权重(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
我正在从头开始实现一个简单的神经网络,仅供练习。我已经让它可以很好地处理二元分类问题的 sigmoid、tanh 和 ReLU 激活。我现在尝试用它来解决多类、互斥的问题。当然,softmax 是最好的选择。
不幸的是,我在理解如何在反向传播中实现 softmax、交叉熵损失及其导数时遇到了很多困难。即使在这里和交叉验证上问了几个问题后,我也无法得到任何好的指导。
在我尝试进一步实现 softmax 之前,是否可以以某种方式使用 sigmoid 来解决多类问题(我试图预测 n 个字符中的 1 个,这些字符被编码为 one-hot 向量)?如果是这样,哪种损失函数最好?我一直在对所有二元分类使用平方误差。
classification machine-learning softmax activation-function sigmoid