【发布时间】:2018-11-11 11:45:26
【问题描述】:
在尝试训练我的张量流图时,我收到错误消息:
ValueError: 使用序列设置数组元素
发生在这行代码中,在 feed_dict 函数中:
# run the session and train the model
_, c = sess.run([optimizer, cost], feed_dict = {input_x: x_train_v, output_y: y_train})
我的输出变量 (y_train) 似乎有问题。它是 pandas 数据框中的大小(25)列表。 已经用
检查了每个列表是否具有相同的长度print(y_train.shape) #(23904,)
print(y_train.apply(type)[0]) #<class 'list'>
n = len(y_train[0])
if all(len(x) == n for x in y_train):
print("true") #true
使用以下代码创建变量:
dataframe['category_number'] = ""
for _ in range(len(dataframe)):
string = dataframe.at[_, 'Product Categorization Tier 1'].strip()
number = category_list.index(string)
# saving as category vector
vector = [0] * 25
vector[number] = 1
dataframe.at[_,'category_number'] = vector
y_train = train_df["category_number"]
编辑: 成本函数和优化器
prediction = neural_network_model(input_x )
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=output_y))
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
【问题讨论】:
-
print(y_train.apply(type)[0]) #<class 'list'>我想你在这里期待int? -
我希望它是一个列表,因为它是输出标签的向量,我的 NN 在输出层应该有 25 个神经元,就像列表的长度一样
-
所以它是一个用于分类的单热向量。你的损失期望一个标量吗? E:你能打印整个stracktrace吗?
-
是的没错,它是一个单热向量。我添加了我的成本函数和完整的错误消息
-
如果是单热向量,
print(y_train.shape)不应该返回 (23904,25) 吗?
标签: python pandas tensorflow