我直接在Xcode游乐场中建立自己的神经网络,我拥有了大部分神经网络,但是为了计算每个神经元的值,最后我需要使用S形来使它的值介于-1和1之间。我不确定数学本身,因此我不知道如何以编程方式进行此操作。 这是我目前拥有的代码。主要只是看神经元功能,我在那儿有一条评论指出我要去哪里。非常感谢高级人士(: 代码:
import Cocoa
var inputs: [Double] = [0, 0, 0, 0]//*
//2 neuron hidden layer
var outputs: [Double] = [0, 0]//*
//Inputs and outputs of the neural network
//*not for training
func neuron1_1 (_ Weights: [Double] = [0, 0, 0, 0], _ bias: Double) -> Double {
var myProduct: Double = 0
myProduct = myProduct + inputs[0] * Weights[0]
myProduct = myProduct + inputs[1] * Weights[1]
myProduct = myProduct + inputs[2] * Weights[2]
myProduct = myProduct + inputs[3] * Weights[3]
//multiply all weights with inputs
myProduct = myProduct + bias
//add the output
//Sigmoid function here
return myProduct
}
func neuron1_2 (_ Weights: [Double] = [0, 0, 0, 0], _ bias: Double) -> Double {
var myProduct: Double = 0
myProduct = myProduct + inputs[0] * Weights[0]
myProduct = myProduct + inputs[1] * Weights[1]
myProduct = myProduct + inputs[2] * Weights[2]
myProduct = myProduct + inputs[3] * Weights[3]
//multiply all weights with inputs
myProduct = myProduct + bias
//add the output
//Sigmoid function here
return myProduct
}
func neuron2_1 (_ Weights: [Double] = [0, 0, 0, 0], _ bias: Double) -> Double {
var myProduct: Double = 0
myProduct = myProduct + neuron1_1([0, 0, 0, 0], 0) * Weights[0]
myProduct = myProduct + neuron1_2([0, 0, 0, 0], 0) * Weights[0]
myProduct = myProduct + bias
return myProduct
}
func neuron2_2 (_ Weights: [Double] = [0, 0, 0, 0], _ bias: Double) -> Double {
var myProduct: Double = 0
myProduct = myProduct + neuron1_1([0, 0, 0, 0], 0) * Weights[0]
myProduct = myProduct + neuron1_2([0, 0, 0, 0], 0) * Weights[0]
myProduct = myProduct + bias
return myProduct
}
func cost () -> Double {
var cost: Double = 0
// ˘ use for training. Represents the desired
output
cost = cost + pow((neuron2_1([0, 0, 0, 0], 0) - 0 ), 2)
cost = cost + pow((neuron2_2([0, 0, 0, 0], 0) - 0 ), 2)
return cost
}
答案 0 :(得分:0)
S形函数很简单
func sigmoid(z: Double) -> Double {
return 1.0 / (1.0 + exp(-z))
}
这将返回0或1,但短过渡段除外,您可以将其任意减小。
我强烈建议您学习线性代数。这将为您节省很多痛苦。 https://developer.apple.com/documentation/accelerate/working_with_matrices