gpt4 book ai didi

python - Tensorflow输出层的不同激活函数

转载 作者:行者123 更新时间:2023-11-30 09:28:41 25 4
gpt4 key购买 nike

所以我的问题似乎很简单,但我无法弄清楚 python tensorflow 的语法。我有一个简单的神经网络,包含一个输入层、一个隐藏层和一个输出层。输出层由两个神经元组成。所以问题是:第一个输出神经元我想保持线性,而第二个输出神经元应该有一个 S 形激活函数。我发现tensorflow中没有“切片分配”这样的东西,但我没有找到任何解决方法。

这里是一个示例片段:

def multilayer_perceptron(x, weights, biases,act_fct):

layer_1 = tf.add(tf.matmul(x, weights['h1']), biases['b1'], name='hidden_layer_op')

if (act_fct == 'sigmoid'):
layer_1 = tf.nn.sigmoid(layer_1)
print 'sigmoid'
elif (act_fct == 'relu'):
print 'relu'
layer_1 = tf.nn.relu(layer_1)
elif (act_fct == 'linear'):
print 'linear'
else :
print 'Unknown activation function'
sys.exit()

out_layer = tf.add(tf.matmul(layer_1, weights['out']), biases['out'], name='output_layer_op')

##DOES NOT WORK!
out_layer[1] = tf.nn.sigmoid(out_layer[1])
return out_layer

我确信有一种非常简单的方法可以做到这一点。不过希望有人能帮助我。附: (传递给函数的所有变量都已预先相应初始化)

致以诚挚的问候和感谢!

最佳答案

我假设layer_1是一个形状为(batch_size, 2)的张量。这是一种方法:

import tensorflow as tf

batch_size = 3
layer_1 = tf.ones((batch_size, 2))

output_1 = layer_1[:, None, 0]
output_2 = tf.sigmoid(layer_1[:, None, 1])

output = tf.concat([output_1, output_2], axis=-1)

with tf.Session() as sess:
print(sess.run(output))

关于python - Tensorflow输出层的不同激活函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50291568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com