我正在尝试编写代码来创建一个神经网络。该网络应该从特定的csv
文件中读取数据,该文件包含每个输入个体13
个不同的特征。以下是我的代码片段:
n_inputs = 13X = tf.placeholder(tf.float32, shape=(None, n_inputs), name="X")y = tf.placeholder(tf.int64, shape=None, name="y")def data_processor(n): id = pd.read_csv('./subset_numerical/'+patient_id[n]) id_input = np.array(id['VALUE'].tolist()) for s in sepsis_pat: if str(s) == str(patient_id[n].split('.')[0]): a = 1 try: if a == 1: a = 0 return [id_input, np.array([1, 0])] except: return [id_input, np.array([0, 1])]
我的tf.Session()
部分看起来像这样:
with tf.Session() as sess:init.run() for epoch in range(n_epochs): a = 0 for iteration in range(300 // batch_size): X_batch, y_batch = data_processor(iteration) print((X_batch)) sess.run(training_op, feed_dict={X: X_batch, y: y_batch}) acc_train = accuracy.eval(feed_dict={X: X_batch, y: y_batch}) print(epoch, "Train accuracy:", acc_train) save_path = saver.save(sess, "./my_model_final.ckpt")
问题是:执行后,显示以下错误:
Can not feed value of shape (13,) for tensor 'X:0', which has shape (?,13)
这是什么问题?
回答:
你的X
占位符期望输入的shape=(None, n_inputs)
,而X_batch
的形状是n_inputs
,所以形状不匹配。
你可以通过将n_inputs
放入列表中,使其形状变为(1, n_inputs)来解决这个问题:
sess.run(training_op, feed_dict={X: [X_batch], y: y_batch})