Ошибка при выполнении sess.run () ValueError: установка элемента массива с последовательностью - PullRequest
0 голосов
/ 04 апреля 2019

Эта ошибка генерируется, когда я пытаюсь выполнить шаг обучения. Набор данных - это набор данных MNIST от Kaggle. Я использую нейронную сеть для прогнозирования рукописных цифр:

Входные данные: [33600, 784] преобразовано в [784, 33600]

Архитектура нейронной сети:

Слой 1 имеет W1 1000 на 784 ед.
Слой 2 имеет W2 1000 на 1000 рэу
Слой 3 имеет W3 500 на 1000 relu
Слой 4 имеет W4 200 на 500 рэу
Слой 5 имеет W5 10 на 200 с softmax
Никаких уклонов не используется

Код:

print(X_train[:, 0].reshape(-1, 1).shape,"   ",y_train[:,0].reshape(-1,1).shape)`

Выход: (784, 1) (10, 1)

Код:

X, Y = tf.placeholder(tf.float32,[784, None]), tf.placeholder(tf.float32,[10, None])

logits = forward_propagation(X, parameters)

cost = compute_cost(logits, Y)
optimizer = tf.train.AdamOptimizer(learning_rate=1e-3).minimize(cost)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    _,c = sess.run([optimizer,cost], feed_dict= {X:X_train[:,0].reshape(-1,1),
                                                 Y:y_train[:, 0].reshape(-1,1)})
print(c)

Выход:

ValueError         Traceback (most recent call 
last)
<ipython-input-41-f78f499b0606> in <module>()
8 with tf.Session() as sess:
9     sess.run(tf.global_variables_initializer())
---> 10     _,c = sess.run([optimizer,cost], feed_dict= 
{X:np.asarray(X_train), Y:np.asarray(y_train)})
11 print(c)

.......
.......

ValueError: setting an array element with a sequence.

Пожалуйста, исправьте код, если можете.

1 Ответ

0 голосов
/ 04 апреля 2019

Я получил решение. Как упоминалось в ответах на многие другие подобные вопросы, проблема, как правило, связана с формой и типом массивов, предоставленных в feed_dict. Мой основной фокус был только на X: X_train [:, 0] .reshape (-1,1), но это была правильная форма и тип. Ошибка была в Y: y_train [:, 0] .reshape (-1,1). Я не смог обнаружить эту ошибку, потому что я применил one_hot_encoding к y_train, но забыл использовать метод .toarray () после преобразования. Таким образом, форма y_train оказалась правильной, но на самом деле она была неправильной.

В качестве общего предложения, пройдя через много похожих вопросов, я бы сказал, чтобы тщательно проверить формы, типы и содержимое массивов, подаваемых в feed_dict.

...