Python ValueError:使用序列设置数组元素。

Python ValueError:使用序列设置数组元素。,python,numpy,tensorflow,Python,Numpy,Tensorflow,我正在使用iris数据集处理分类问题,我遇到了ValueError问题:使用序列设置数组元素。我将数据集转换为numpy.ndarray,但仍然有相同的错误 这是我的密码 import tensorflow as tf import numpy as np import pandas as pd rawdata = pd.read_csv('/home/akki/Desktop/TF/IRIS.csv') print(np.shape(rawdata)) rawdatashuffel =

我正在使用iris数据集处理分类问题,我遇到了ValueError问题:使用序列设置数组元素。我将数据集转换为numpy.ndarray,但仍然有相同的错误 这是我的密码

import tensorflow as tf 
import numpy as np 
import pandas as pd 

rawdata = pd.read_csv('/home/akki/Desktop/TF/IRIS.csv')
print(np.shape(rawdata))
rawdatashuffel = rawdata.reindex(np.random.permutation(rawdata.index)).as_matrix()


data = rawdatashuffel[:,range(0,7)]
print(np.shape(data))
labels = rawdatashuffel[:,8]
print(np.shape(labels))
##############################################################
# one hot genration
Number_of_op_class = 3
lab = np.eye(Number_of_op_class)
print(lab)
#print(type(lab[0]))

###########################################################################
# converting label to one hot
for i in range(0,100):
    if labels[i] == 'setosa':
        labels[i] = lab[0]
    elif labels[i] == 'versicolor':
        labels[i] = lab[1]
    elif labels[i] == 'virginica':
        labels[i] = lab[2]
print(labels)
print(type(labels))
#labels = np.asarray(labels)




 train_data = data[range(0,79),:]
 train_label = labels[range(0,79)]

test_data = data[range(80,99),:]
test_labels = labels[range(80,99)]

#print(test_labels)

X = tf.placeholder(tf.float32)
y_ = tf.placeholder(tf.float32)

W=tf.Variable(tf.zeros([8,3]))
b=tf.Variable(tf.zeros([3]))

y = tf.nn.softmax(tf.matmul(X, W) + b)
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))

#optimiser -
train_step = tf.train.AdamOptimizer(0.01).minimize(cross_entropy)
#calculating accuracy of our model 
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))


#session parameters
sess = tf.InteractiveSession()
#initialising variables
init = tf.initialize_all_variables()
sess.run(init)
#number of interations
epoch=2000

for step in range(epoch):
   _, c=sess.run([train_step,cross_entropy], feed_dict={X: train_data, y_: train_label})
    if step%500==0 :
       print(c)
我得到的错误是

Traceback (most recent call last):
  File "iris.py", line 70, in <module>
    _, c=sess.run([train_step,cross_entropy], feed_dict={X: train_data, y_: train_label})
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 372, in run
run_metadata_ptr)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 619, in _run
    np_val = np.array(subfeed_val, dtype=subfeed_dtype)
ValueError: setting an array element with a sequence.
回溯(最近一次呼叫最后一次):
文件“iris.py”,第70行,在
_,c=sess.run([train_step,cross_entropy],feed_dict={X:train_data,y:train_label})
文件“/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py”,第372行,正在运行
运行_元数据_ptr)
文件“/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py”,第619行,正在运行
np\u val=np.array(subfeed\u val,dtype=subfeed\u dtype)
ValueError:使用序列设置数组元素。

当提要值包含大小不同的行时,几乎总是会出现此问题。要查找问题,请在调用
sess.run()
之前,尝试将
train\u数据
train\u标签
转换为适当类型和形状的NumPy数组。@mrry非常感谢朋友,我发现了标签集制作中的错误