python给我的解决方案是什么;ValueError:使用序列设置数组元素。";
我正在运行下面的代码,但它给了我一个关于数组的错误。我试图找到一个解决方案,并以某种方式理解问题,但我无法解决问题。这是我的密码:python给我的解决方案是什么;ValueError:使用序列设置数组元素。";,python,arrays,numpy,tensorflow,data-science,Python,Arrays,Numpy,Tensorflow,Data Science,我正在运行下面的代码,但它给了我一个关于数组的错误。我试图找到一个解决方案,并以某种方式理解问题,但我无法解决问题。这是我的密码: import tensorflow as tf import pandas as pa import numpy as np iris = pa.read_csv("iris.csv", names = ['F1', 'F2', 'F3', 'F4', 'class']) print(iris.head(5)) iris['class'].value_coun
import tensorflow as tf
import pandas as pa
import numpy as np
iris = pa.read_csv("iris.csv", names = ['F1', 'F2', 'F3', 'F4', 'class'])
print(iris.head(5))
iris['class'].value_counts()
#mapping data
A1 = np.asarray([1,0,0])
A2 = np.asarray([0,1,0])
A3 = np.asarray([0,0,1])
Irises = {'Iris-setosa' : A1, 'two' : A2, 'Iris-virginica' : A3}
iris['class'] = iris['class'].map(Irises)
#Mjesanje podataka
iris = iris.iloc[np.random.permutation(len(iris))]
print(iris.head(10))
iris = iris.reset_index(drop=True)
print(iris.head(10))
#splitting data into training and testing
x_train = iris.ix[0:100,['F1', 'F2', 'F3', 'F4']]
y_train = iris.ix[0:100,['class']]
x_test = iris.ix[101:, ['F1', 'F2', 'F3', 'F4']]
y_test = iris.ix[101:, ['class']]
print(x_train.tail(5))
print(y_train.tail(5))
print(x_test.tail(5))
print(y_test.tail(5))
n_nodes_hl1 = 150
n_nodes_hl2 = 150
n_classes = 3 # U ovom slucaju tri, 1-> Iris-setosa, Iris-versicolo, Iris-virginica
batch_size = 50 # Da li ima neko optimalno rijesenje koliko uzeti?
x = tf.placeholder('float', shape = [None, 4]) # 4 featrues
y = tf.placeholder('float', shape = [None, n_classes]) # 3 classes
def neural_network_model(data):
hidden_layer_1 = {'weights': tf.Variable(tf.random_normal([4, n_nodes_hl1])),
'biases':tf.Variable(tf.random_normal([n_nodes_hl1]))}
hidden_layer_2 = {'weights': tf.Variable(tf.random_normal([n_nodes_hl1, n_nodes_hl2])),
'biases':tf.Variable(tf.random_normal([n_nodes_hl2]))}
output_layer = {'weights': tf.Variable(tf.random_normal([n_nodes_hl2, n_classes])),
'biases': tf.Variable(tf.random_normal([n_classes]))}
l1 = tf.add(tf.matmul(data, hidden_layer_1['weights']), hidden_layer_1['biases']) #(input_data * weights) + biases
l1 = tf.nn.relu(l1) #activation function, im using rectified
l2 = tf.add(tf.matmul(l1, hidden_layer_2['weights']), hidden_layer_2['biases'])
l2 = tf.nn.relu(l2)
output_layer = tf.matmul(l2, output_layer['weights'] + output_layer['biases'])
return output_layer
def train_neural_network(x):
prediction = neural_network_model(x)
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(prediction, y)) #loss
optimizer = tf.train.GradientDescentOptimizer(0.1).minimize(cross_entropy)
#koliko puta ce ici back
hm_epoch = 10
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
for step in range(hm_epoch):
_, c = sess.run([optimizer, cross_entropy], feed_dict={x: x_train, y:[t for t in y_train.as_matrix()]})
print(c)
correct = tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))
#prediction = sess.run(accuracy, feed_dict=(x: x_test, y:[t for t in y_test.as_matrix()]))
#print(prediction)
train_neural_network(x)
我得到了这个错误:
回溯(最后一次调用):文件“NeuralNet.py”,第92行,在
训练神经网络(x)文件“NeuralNet.py”,第83行,训练神经网络
_,c=sess.run([optimizer,cross_entropy],feed_dict={x:x_train,y:[t代表y_train.as_matrix()]中的t})文件
“/home/jusuf/anaconda3/lib/python3.5/site packages/tensorflow/python/client/session.py”,
第717行,在run_metadata_ptr)文件中
“/home/jusuf/anaconda3/lib/python3.5/site packages/tensorflow/python/client/session.py”,
第888行,in运行np值=np.asarray(副进纸值,
dtype=子进纸(dtype)文件
“/home/jusuf/anaconda3/lib/python3.5/site packages/numpy/core/numeric.py”,
第482行,在asarray中
返回数组(a,dtype,copy=False,order=order)值错误:使用序列设置数组元素
错误消息为
ValueError: setting an array element with a sequence.
说明:您正在尝试使用序列设置数组元素。那么,错误在哪里,请参见下文
c = sess.run([optimizer, cross_entropy]
告诉我什么是“c”。它可能是一个浮点数,整数或者其他的。但我很确定这不是一个数组。这就是您收到上述异常的原因
但是如果你想打印出这个数组,你可以直接打印
print(sess.run([optimizer,cross\u entropy])
而不是runprint(c)
据我从代码中看到的,您没有在任何地方使用“c”。产生此错误的一个操作是将列表分配给数组元素:
In [498]: x=np.zeros(3)
In [499]: x
Out[499]: array([ 0., 0., 0.])
In [500]: x[0] = [1,2,3]
....
ValueError: setting an array element with a sequence.
由于错误出现在np.asarray(subfeed\u val,dtype=subfeed\u dtype)
语句中,它很可能执行以下操作:
In [502]: np.array([[1,2,3],[1,2]], dtype=int)
ValueError: setting an array element with a sequence.
把一系列的数字放进一个槽里仍然是个问题
进一步查看错误堆栈,错误位于:
sess.run([optimizer, cross_entropy], feed_dict={x: x_train, y:[t for t in y_train.as_matrix()]})
我认为这与分配给c
的任务无关
sess.run
是一个我一无所知的tensorflow
函数
================
正确格式化的错误堆栈是
Traceback (most recent call last):
File "NeuralNet.py", line 92, in train_neural_network(x)
File "NeuralNet.py", line 83, in train_neural_network
_, c = sess.run([optimizer, cross_entropy], feed_dict={x: x_train, y:[t for t in y_train.as_matrix()]})
File "/home/jusuf/anaconda3/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 717, in
runrun_metadata_ptr)
File "/home/jusuf/anaconda3/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 888, in
_run np_val = np.asarray(subfeed_val, dtype=subfeed_dtype)
File "/home/jusuf/anaconda3/lib/python3.5/site-packages/numpy/core/numeric.py", line 482, in
asarray return array(a, dtype, copy=False, order=order)
ValueError: setting an array element with a sequence.
我建议查看tensorflow
文档,确保此函数的输入正确。关注允许的类型,如果是数组,则关注尺寸、形状和数据类型