相关疑难解决方法(0)

从神经网络的不同成本函数和激活函数中选择

最近我开始玩神经网络.我试图AND用Tensorflow 实现一个门.我无法理解何时使用不同的成本和激活功能.这是一个基本的神经网络,只有输入和输出层,没有隐藏层.

首先,我尝试以这种方式实现它.正如您所看到的,这是一个糟糕的实现,但我认为它完成了工作,至少在某种程度上.所以,我只尝试了真正的输出,没有一个真正的输出.对于激活函数,我使用了sigmoid函数,对于成本函数,我使用了平方误差成本函数(我认为它称之为,如果我错了,请纠正我).

我尝试使用ReLU和Softmax作为激活功能(具有相同的成本函数),但它不起作用.我弄清楚他们为什么不工作.我也尝试过使用交叉熵成本函数的sigmoid函数,它也不起作用.

import tensorflow as tf
import numpy

train_X = numpy.asarray([[0,0],[0,1],[1,0],[1,1]])
train_Y = numpy.asarray([[0],[0],[0],[1]])

x = tf.placeholder("float",[None, 2])
y = tf.placeholder("float",[None, 1])

W = tf.Variable(tf.zeros([2, 1]))
b = tf.Variable(tf.zeros([1, 1]))

activation = tf.nn.sigmoid(tf.matmul(x, W)+b)
cost = tf.reduce_sum(tf.square(activation - y))/4
optimizer = tf.train.GradientDescentOptimizer(.1).minimize(cost)

init = tf.initialize_all_variables()

with tf.Session() as sess:
    sess.run(init)
    for i in range(5000):
        train_data = sess.run(optimizer, feed_dict={x: train_X, y: train_Y})

    result = sess.run(activation, feed_dict={x:train_X})
    print(result)
Run Code Online (Sandbox Code Playgroud)

5000次迭代后:

[[ 0.0031316 ]
[ 0.12012422]
[ 0.12012422]
[ 0.85576665]] …
Run Code Online (Sandbox Code Playgroud)

python machine-learning svm neural-network tensorflow

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