Python 3.x 如何在tensorflow中将单个神经元的输出转换为0和1类
我在泰坦尼克号数据集上做了一个NN。为了计算模型的精度,我希望输出Z3/A3为1,如果它高于0.5,否则为0 如果有其他的方法来做这种事情。那么请告诉我 这是我的前向道具功能Python 3.x 如何在tensorflow中将单个神经元的输出转换为0和1类,python-3.x,tensorflow,deep-learning,data-science,Python 3.x,Tensorflow,Deep Learning,Data Science,我在泰坦尼克号数据集上做了一个NN。为了计算模型的精度,我希望输出Z3/A3为1,如果它高于0.5,否则为0 如果有其他的方法来做这种事情。那么请告诉我 这是我的前向道具功能 def forward_prop(X, parameters): W1 = parameters['W1'] W2 = parameters['W2'] b1 = parameters['b1'] b2 = parameters['b2'] W3 = parameters['W3']
def forward_prop(X, parameters):
W1 = parameters['W1']
W2 = parameters['W2']
b1 = parameters['b1']
b2 = parameters['b2']
W3 = parameters['W3']
b3 = parameters['b3']
Z1 = tf.matmul(W1, tf.transpose(X))
A1 = tf.nn.relu(tf.add(Z1, b1))
Z2 = tf.matmul(W2, A1)
A2 = tf.nn.relu(tf.add(Z2, b2))
Z3 = tf.matmul(W3, A2)
A3 = tf.nn.softmax(tf.add(Z3, b3))
return A3
A3的输出形状为1,1
这是成本函数
def compute_cost(Z3, Y, m):
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(
labels=tf.transpose(Y), logits=Z3))
return cost
它以一些数字的形式给出输出。。。我希望输出为离散类,即0和1
请帮忙 计算类输出神经元的概率分布,如果只有1个输出神经元,则1个神经元的概率分布始终为1.0。我建议结合使用,例如:
如果A3大于0.5,则预测将返回True,否则返回False。
您可以将布尔预测转换为其他类型,例如整数:
class_label = tf.cast(prediction, tf.int32)
这样,True将转换为1,False将转换为0。
对于成本函数,使用:
如果你有更多关于单神经元二元分类的详细信息,我建议你进一步研究。LOL现在是凌晨3点,我忘记了我的概念。我知道我忘了什么,结果发现是乙状结肠。我不知道tf。更大的。。。非常感谢:@mohisaini您的代码可能包含bug,我更新了答案,请查看***部分这是我的第一个模型:。有什么改进的建议吗?@mohisaini我看了看代码,那不是一个bug,很抱歉。否则看起来没问题,但我没有运行代码。
class_label = tf.cast(prediction, tf.int32)
cost = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labels=tf.transpose(Y), logits=Z3))