weixin_41138872 2018-05-28 01:47 采纳率: 66.7%
浏览 999
已结题

sigmod两层训练模型怎样提取测试选择的结果

我做了两层神经网络模型,能够取出测试准确率但是取不出测试选则的分类结果。请问怎么提取?

##这些是训练环境
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt

import pickle
from numpy import nan
import math

##这些是模型结构
n_hidden_1=170
n_hidden_2=128
n_input=214
n_classes=2
#inputs and outputs
x=tf.placeholder("float", [None,n_input])
y=tf.placeholder("float",[None,n_classes])
#network parameter
stddev=0.1
weights={
'w1':tf.Variable(tf.random_normal([n_input,n_hidden_1],stddev=stddev)),
'w2':tf.Variable(tf.random_normal([n_hidden_1,n_hidden_2],stddev=stddev)),
'out':tf.Variable(tf.random_normal([n_hidden_2,n_classes],stddev=stddev))
}
biases={
'b1':tf.Variable(tf.random_normal([n_hidden_1])),
'b2':tf.Variable(tf.random_normal([n_hidden_2])),
'out':tf.Variable(tf.random_normal([n_classes]))
}
print("NETWORK READY")

###这些是训练方法
def multilayer_perceptron(_X,_weights,_biases):
layer_1=tf.nn.sigmoid(tf.add(tf.matmul(_X,_weights['w1']),_biases['b1']))
layer_2=tf.nn.sigmoid(tf.add(tf.matmul(layer_1,_weights['w2']),_biases['b2']))
return(tf.matmul(layer_2,_weights['out'])+_biases['out'])

#prediction

pred=multilayer_perceptron(x,weights,biases)
#loss and opt
cost=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred,labels=y))
optm=tf.train.GradientDescentOptimizer(learning_rate=0.001).minimize(cost)
corr=tf.equal(tf.argmax(pred,1),tf.argmax(y,1))
accr=tf.reduce_mean(tf.cast(corr,"float"))

#Init
init=tf.global_variables_initializer()
print("Function")

training_lenth=len(G)####(回测长度)
training_epochs =400 #训练次数
batch_size = len(G) #每次迭代用多少样本(用全套)
display_step=4
#launch the graph
sess=tf.Session()
sess.run(init)

##这是训练和测试的过程
for epoch in range(training_epochs):
avg_cost=0.
total_batch=int(len(G)/batch_size)
#Iteration
for i in range(total_batch):
batch_xs=np.array(G[i])
batch_ys=np.array(F[i])
feeds={x:batch_xs,y:batch_ys}
sess.run(optm,feed_dict=feeds)
avg_cost+=sess.run(cost,feed_dict=feeds)
avg_cost=avg_cost/total_batch
#Display
if (epoch+1)%display_step==0:
print("Epoch:%03d/%03d cost:%.9f"%(epoch,training_epochs,avg_cost))
feeds={x:batch_xs, y:batch_ys}
train_acc=sess.run(accr, feed_dict=feeds)
print("Train accuracy:%.3f" % (train_acc))
feeds={x:G[i+1], y:F[i+1]}
test_acc=sess.run(accr, feed_dict=feeds)####这个是训练准确度
print("Test accuracy: %.3f" % (test_acc))
print("Optimization finished")

test_acc=sess.run(accr, feed_dict=feeds)我知道这个是训练准确度的提取方法
但是不知道训练结果选的分类都是什么,请问怎么得到训练结果?

  • 写回答

1条回答 默认 最新

  • jiangxiaoyu610 2018-07-30 13:41
    关注

    之前练习cnn的时候用过softmax,使用softmax时会运用以下代码,其中h_fc2是cnn中的全连接层。

     prediction = tf.nn.softmax(h_fc2, name='prob')
     ##########################################
     sess.run(prediction)
    

    sigmod应该也可以这样看吧,只不过输出的应该是分类的1或0

    评论

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退