Почему он не может изменить массив с формы (60000, 10, 1) в (60000, 10)? - PullRequest
0 голосов
/ 16 апреля 2019

Я изучаю уроки тензорного потока, на одном из которых есть шаг, чтобы преобразовать массив с формой (60000, 10, 1) в форму (60000, 10).Но кажется, что форма не изменилась после вызова метода ndarray.reshape - он все еще (60000, 10, 1).

Однако я попытался установить Атрибут shape напрямую работает !Например:

# Setting shape attribute works - fragment of python code
# Shape of training[1] is (60000, 10, 1)

training[1] = np.array([vectorized_result(y) for y in training[1]])

training[1].shape = (training[1].shape[0],training[1].shape[1])

# print the shape
print(training[1].shape)


# definition of vectorized_result
def vectorized_result(j):
    """Return a 10-dimensional unit vector with a 1.0 in the jth
    position and zeroes elsewhere.  This is used to convert a digit
    (0...9) into a corresponding desired output from the neural
    network."""
    e = np.zeros((10, 1))
    e[j] = 1.0
    return e

Запустите код и получите

$ python test.py
(60000, 10)

Используя изменить форму метод, но не удается :

# fragment of python code

training[1] = np.array([vectorized_result(y) for y in training[1]])

training[1].reshape((training[1].shape[0],training[1].shape[1]))

# print the shape
print(training[1].shape)


# definition of vectorized_result
def vectorized_result(j):
    """Return a 10-dimensional unit vector with a 1.0 in the jth
    position and zeroes elsewhere.  This is used to convert a digit
    (0...9) into a corresponding desired output from the neural
    network."""
    e = np.zeros((10, 1))
    e[j] = 1.0
    return e

Запустите код и получите


$ python test.py
(60000, 10, 1)

Пожалуйста, помогите мне с этой проблемой.

Спасибо большое.

1 Ответ

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

Попробуйте следующее изменение:

training[1] = training[1].reshape((training[1].shape[0],training[1].shape[1]))
...