我的问题是关于在深度神经网络中实时进行训练和测试,而不是分别进行训练和测试。
据我所知,下面的代码中的深度神经网络是先进行训练,然后在完成训练后开始测试。我的问题是,如果我想每次都进行训练,并且如果输出低于某个阈值,就应该进行测试,等等,该怎么办?
### importsimport tensorflow as tf### constant datax = [[0.,0.],[1.,1.],[1.,0.],[0.,1.]]y_ = [[0.],[0.],[1.],[1.]]### induction# 1x2 input -> 2x3 hidden sigmoid -> 3x1 sigmoid output# Layer 0 = the x2 inputsx0 = tf.constant( x , dtype=tf.float32 )y0 = tf.constant( y_ , dtype=tf.float32 )# Layer 1 = the 2x3 hidden sigmoidm1 = tf.Variable( tf.random_uniform( [2,3] , minval=0.1 , maxval=0.9 , dtype=tf.float32 ))b1 = tf.Variable( tf.random_uniform( [3] , minval=0.1 , maxval=0.9 , dtype=tf.float32 ))h1 = tf.sigmoid( tf.matmul( x0,m1 ) + b1 )# Layer 2 = the 3x1 sigmoid outputm2 = tf.Variable( tf.random_uniform( [3,1] , minval=0.1 , maxval=0.9 , dtype=tf.float32 ))b2 = tf.Variable( tf.random_uniform( [1] , minval=0.1 , maxval=0.9 , dtype=tf.float32 ))y_out = tf.sigmoid( tf.matmul( h1,m2 ) + b2 )### loss# loss : sum of the squares of y0 - y_outloss = tf.reduce_sum( tf.square( y0 - y_out ) )# training step : gradient decent (1.0) to minimize losstrain = tf.train.GradientDescentOptimizer(1.0).minimize(loss)### training# run 500 times using all the X and Y# print out the loss and any other interesting infowith tf.Session() as sess: sess.run( tf.global_variables_initializer() ) for step in range(500) : sess.run(train) results = sess.run([m1,b1,m2,b2,y_out,loss]) labels = "m1,b1,m2,b2,y_out,loss".split(",") for label,result in zip(*(labels,results)) : print "" print label print resultprint ""
例如,在上面的例子中,应该计算变量loss
的值,如果它小于0.01
,就应该进行测试,并且每次都应该计算以便进行测试。
这是可能的吗?我如何修改下面的代码来实现这个功能?
提前谢谢你
回答: