我对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
是包含输入数据和相应标签的字典。 feature1
和feature2
是相同神经网络的输出,最后我想比较feature1
和feature2
。
要点是:
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:使用序列设置数组元素。