Проблема с тензорным потоком, TF_SessionRun_wrapper: ожидалось, что все значения во входных данных будут ndarray - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь выучить тензор потока, и я написал свою первую модель.Когда я пытаюсь запустить эту модель, тензор потока выдает

TypeError: TF_SessionRun_wrapper: ожидается, что все значения во входных данных dict будут ndarray.

Я проверяю тип данных во входном dict, и они являются ndarrays.Возможно, я неправильно обработал данные, передаваемые в модель.

import tensorflow as tf
import numpy as np
from sklearn.datasets import load_iris

np.random.seed(0)
data, labels = load_iris(return_X_y=True)
num_elements = len(labels)

shuffled_indices = np.arange(len(labels))
np.random.shuffle(shuffled_indices)
shuffled_data = data[shuffled_indices]
shuffled_labels = labels[shuffled_indices]

one_hot_labels = np.zeros([num_elements, 3], dtype=int)
one_hot_labels[np.arange(num_elements), shuffled_labels] = 1

train_data = shuffled_data[0:105]
train_labels = one_hot_labels[0:105]
test_data = shuffled_data[105:]
test_labels = one_hot_labels[105:]


def linear_model(input):
    my_weights = tf.get_variable(name="weights", shape=[4, 3])
    my_bias = tf.get_variable(name="bias", shape=[3])

    linear_layer = tf.matmul(input, my_weights)
    linear_layer_out = tf.nn.bias_add(value=linear_layer, bias=my_bias)
    return linear_layer_out

x = tf.placeholder(tf.float32, shape=[None, 4], name="data_in")
y = tf.placeholder(tf.int32, shape=[None, 3], name="target_labels")

model_out = linear_model(x)

initializer = tf.global_variables_initializer()

loss = tf.reduce_mean(tf.losses.hinge_loss(logits=model_out, labels=y))

optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.5).minimize(loss)

correct_prediction = tf.equal(tf.argmax(model_out, 1), tf.argmax(y, 1))

accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

with tf.Session() as sess:
    sess.run(initializer)

    for i in range(1000):
        batch_x, batch_y = train_data[:, :], train_labels[:, :]
        loss_val, _ = sess.run([loss, optimizer], feed_dict={x: batch_x, y: batch_y})

1 Ответ

0 голосов
/ 25 марта 2019

Я исправил это, обновив

  • пакет numpy до (1.16.2).
  • тензор потока до 1.13.1,
  • Python до 3.6.8,
  • тензор потока-gpu до 1.13.1

Не работает сверсия 2.0.A.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...