ValueError:使用序列设置数组元素。(Python/SKFlow)

2024-06-16 14:31:09 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我使用这个网站多年后的第一个问题-如果我做错了什么,请纠正我。。。你知道吗

我正在尝试使用TensorFlow的SKFlow部分来训练一个深度神经网络分类器,这应该会使这个非常简单。当我将数据传递给分类器fit方法时,我经常得到这个ValueError。你知道吗

Traceback (most recent call last):
  File "./train_ann.py", line 55, in <module>
clf.fit(x_train.values, y_train.values, steps=1000)
  File "/home/maurice/Dev/pyvenv/itslb/lib/python3.5/site-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 235, in fit
epochs=None)
  File "/home/maurice/Dev/pyvenv/itslb/lib/python3.5/site-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 82, in _get_input_fn
epochs=epochs)
  File "/home/maurice/Dev/pyvenv/itslb/lib/python3.5/site-packages/tensorflow/contrib/learn/python/learn/learn_io/data_feeder.py", line 116, in setup_train_data_feeder
x, y, n_classes, batch_size, shuffle=shuffle, epochs=epochs)
  File "/home/maurice/Dev/pyvenv/itslb/lib/python3.5/site-packages/tensorflow/contrib/learn/python/learn/learn_io/data_feeder.py", line 241, in __init__
self.x = check_array(x, dtype=x_dtype)
  File "/home/maurice/Dev/pyvenv/itslb/lib/python3.5/site-packages/tensorflow/contrib/learn/python/learn/learn_io/data_feeder.py", line 188, in check_array
array = np.array(array, dtype=dtype, order=None, copy=False)
ValueError: setting an array element with a sequence.

相关代码如下所示:

# The y_train dataframe now contains only the type_id column which contains only integers
y_train = y_train[["type_id"]]

# Convert the numpy arrays to lists
x_train["vector"] = x_train.vector.map(lambda x: x.tolist())

# Get the number of classes for the classifier
n_classes = len(list(y_train.type_id.unique()))

# Create a deep neural network classifier
clf = skflow.DNNClassifier(
    hidden_units=[2000, 2000, 1500, 1000],
    n_classes=n_classes,
    model_dir='/home/maurice/Dev/test/TFModel01'
)

# Start training the classifier
clf.fit(x_train, y_train, steps=1000)

x_train数据框如下所示(它只包含一列):

                                                vector
324  [1.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 1.0, 2.0, ...
471  [0.0, 2.0, 0.0, 1.0, 0.0, 0.0, 0.0, 2.0, 0.0, ...
...

y_train看起来像这样:

     type_id
887       10
507        2
...

我试着用这些方法解决如此相似的问题,但不是我做错了,就是出现了不同的问题。你知道吗

我已经尝试过的:

  • 没有将Numpy数组转换为列表,同样的错误
  • 确保x中的每个元素_训练向量有相同的长度-它有
  • 确保x中的每个元素_训练向量是同一类型的-完成
  • 转换x_训练向量到整数-相同的结果

编辑

我做了更多的研究,发现了引发异常的函数是如何调用的。你知道吗

for index, row in x_train.iterrows():
    print(type(row))
    print(row)
    array = np.array(row, dtype=np.float32, order=None, copy=False)

这再现了错误。输出告诉我rowpandas.core.series.Series类型-这解释了异常。你知道吗

<class 'pandas.core.series.Series'>
vector    [1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 2.0, ...
Name: 599, dtype: object
Traceback (most recent call last):
  File "./train_ann.py", line 34, in <module>
    array = np.array(row, dtype=np.float32, order=No

你们能给我一个解决办法吗?你知道吗

提前谢谢!你知道吗


Tags: inpydevhomeliblinetrainarray