Wpis z mikrobloga

#python #programowanie #naukaprogramowania
Co robią te ukośniki w tym kodzie? - https://www.tensorflow.org/tutorials/quickstart/beginner#load_a_dataset

x_train i x_test to uint8 NumPy array - https://www.tensorflow.org/api_docs/python/tf/keras/datasets/mnist/load_data#returns.

Widzę tylko, że dopisują się zera do liczb i że tablica jakby się spłaszcza(?) ale nie wiem.

To jest przeciążony operator dzielenia, czy co?
look997 - #python #programowanie #naukaprogramowania
Co robią te ukośniki w tym kodz...

źródło: comment_1635846885LToVYSNMYh4ZG1GfU4KP2U.jpg

Pobierz
  • 21
@NastyFoxie: No tak, ale xtrain to jest array. To chyba nie jest liczba.

print(x_train) zwaraca:

[[[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
...
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]]

[[0 0 0 ... 0 0 0]
[0 0 0 ... 0
@NastyFoxie: A po x_train / 255.0 zwrca:
```
[[0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. ]
[0. 0. 0. 0. 0.
każdy element macierzy zostaje podzielony przez 255.0


@ProfesorBigos: Czyli takie mapowanie, tak podejrzewałem.
No ale normalnie operator dzielenia tak nie działa, tak?
Czy to jest jakoś przeciążony operator dzielenia?

Jak zrobić to samo, na prostszej tablicy?
@look997: No w pythonie jak najbardziej można przeciążać operatory. NumPy jest kalką matlaba zatem dzieje się tu prawdopodobnie to co dzieje się w matlabie czyli wszystkie liczby są dzielone przez 255. Choć tu patrzył bym na to jak na operacje na macierzach ponieważ właśnie to robił matlab. Dlatego wystarczy wyprintować x_train i zobaczyć co się stało po operacji. W końcu eksperyment ma zawsze ostatnie słowo.
Sprawdziłem sobie na prostszym przykładzie i dosłownie spłaszcza tablicę o jeden poziom i mapuje każdą liczbę, ten kod:

import numpy
x = numpy.array([[[2, 8, 9], [2, 8, 9], [2, 8, 9]], [[2, 8, 9], [2, 8, 9], [2, 8, 9]]])
print("m: ",x)
print()
print("s: ", x / 2)

zwraca:

m: [[[2 8 9]
[2 8 9]
[2 8 9]]

[[2 8 9]
[2 8 9]
[2 8 9]]]

s: [[[1. 4. 4.5]
@Miesho: W samej dokumentacji nazywają to "uint8 NumPy array". Trzeba przekazać listę i zrobi ci "uint8 NumPy array". W moim przykładzie zrobiłem sobie taką prostą "uint8 NumPy array".


Nie przez przypadek zpinowałem siebie taki wiesz żarcik, że sam nazwałem to tablicą i sam w myśl wykopowej tradycji się zesrałem i poprawiłem raczej obecnie częściej programuje w językach typu C++ gdzie oprócz kontenerów są czyste tablice. A z tego co mi wiadomo
@Miesho: Ja wiem że napisałeś sam do siebie.
Ale przez przypadek nie popełniłeś błędu pisząc "tablica", od odnosiłeś się do mnie, który chciał prostszą wersję "uint8 NumPy array", niż tą z przykładu w Tensorflow.
Nie popełniłeś błędu, chociaż może chciałeś popełnić błąd. :P ;D
@look997: Ponad to "uint8 NumPy array": Zgaduje, że odnosi się do kontenera gdzie kwantem informacji jest 8 bitowa wartość. Lecz sam array (a przynajmniej mi nie kojarzy się z żadną konkretną strukturą) nie mówi nam co to za kontener. Lista kolejka stack a może coś innego.
@look997: Wiem o co Ci chodzi nie mniej jednak wydaje mi się że kiedy rozmawiamy o takich strukturach mówienie tablica jest zrozumiałe ma sens nie mniej jednak wydaje mi się nie do końca poprawne gdzie oczywiście jako iż sam python jest napisany w C to każda zawansowana struktura zostanie sprowadzona do tablic. A idąc nawet dalej do ciągu bajtów w pamięci systemowego procesu.