使用张量流

时间:2015-12-08 08:11:19

标签: tensorflow

我对tensorflow很新。现在我正在实现一个成对的cnn模型。虽然我收到了错误:

  

tensorflow.python.pywrap_tensorflow.StatusNotOK:未找到:   FeedInputs:无法找到Feed输出占位符:0

错误归因于代码:

_,train_loss,train_feature1,train_feature2=sess.run([model.train_op,model.cost,model.feature1,model.feature2],feed)

特别是在sess.run函数中,feed是包含输入数据和相应标签的字典。 feature1feature2是相同神经网络的输出,最后我想比较feature1feature2

要点是:

with self.graph.device('/gpu:1'):
     self.inputs1=tf.placeholder(tf.float32,[self.batchSize,self.inputH,self.inputW,hp.channel])
     self.inputs2=tf.placeholder(tf.float32,[self.batchSize,self.inputH,self.inputW,hp.channel])

     self.labels=tf.placeholder(tf.float32,[self.batchSize])

     self.feature1=forward(self.inputs1)
     self.feature2=forward(self.inputs2)

     self.cost=tf.reduce_sum( tf.mul( -1.0*self.labels, tf.sub( self.feature1,self.feature2 ) ) )

     self.tvars=tf.trainable_variables()
     grads=tf.gradients(self.cost,self.tvars)
     optimizer=tf.train.MomentumOptimizer(learning_rate=self.learning_rate,momentum=self.momentum)
     self.train_op=optimizer.apply_gradients(zip(grads,self.tvars))

在这里,我创建了三个占位符,并执行了一些操作,如train_op。 Forward是我实现中使用的神经网络。然后在训练部分中,我使用data_loader.next_batch()加载文本数据和标签,最后使用sess.run()运行优化操作。代码可在下面找到。

for b in xrange(data_loader.batch_num):
    pbar.update(int((b/data_loader.batch_num)*100) )
    time.sleep(0.01)
    maps1,maps2,labels=data_loader.next_batch()
    feed={model.labels:labels,model.inputs1:maps1,model.inputs2:maps2}
    _,train_loss,train_feature1,train_feature2=sess.run([model.train_op,model.cost,model.feature1,model.feature2],feed)   

新错误

我试图将maps1更改为Tensors而不是numpy ndarray,上面的错误消失了。不幸的是,出现了新的错误。

  

文件" Train.py",第55行,列车_,train_loss,train_feature1,train_feature2 = sess.run([model.train_op,model.cost,model.feature1,model.feature2],饲料)         文件" /usr/lib/python2.7/site-packages/tensorflow/python/client/session.py",   第334行,在运行中           np_val = np.array(subfeed_val,dtype = subfeed_t.dtype.as_numpy_dtype)       ValueError:使用序列设置数组元素。

0 个答案:

没有答案