Du bist nicht eingeloggt! Möglicherweise kannst du deswegen nicht alles sehen.
  (Noch kein mods.de-Account? / Passwort vergessen?)
Zur Übersichtsseite
Hallo anonymer User.
Bitte logge dich ein
oder registriere dich!
 Moderiert von: Irdorath, statixx, Teh Wizard of Aiz


 Thema: pOT-lnformatik, Mathematik, Physik XXIV
« erste « vorherige 1 ... 13 14 15 16 [17] letzte »
erste ungelesene Seite | letzter Beitrag 
B0rG*

Gordon
Hm, bist du sicher dass HDF5 überhaupt die relevanten Index-Operationen kann? Könnte mir vorstellen dass in dem Moment wo du fancy indexing benutzt ohnehin alle Daten geladen werden (wenn du Glück hast in Batches) - aber das ist nur eine Vermutung.

Kannst du asynchron (in der Cloud!) die HDF5-Daten in das richtige Format umwandeln und dann "normales" Indexing verwenden? Vielleicht das einfachste...

e/ Und einen kriegst du noch: Wenn du nur Bedenken wegen IO hast aber genug RAM, dann klappt's so:

 
Code:
In [13]: shape = (2, 3, 4); arr = np.random.uniform(size=shape).reshape([-1])

In [14]: arr.reshape(shape)[1, :2, 2:3]
Out[14]: 
array([[0.63263227],
       [0.15985692]])

In [15]: np.arange(np.prod(shape)).reshape(shape)[1, :2, 2:3]
Out[15]: 
array([[14],
       [18]])

In [16]: np.arange(np.prod(shape)).reshape(shape)[1, :2, 2:3].reshape([-1])
Out[16]: array([14, 18])

In [17]: arr[np.arange(np.prod(shape)).reshape(shape)[1, :2, 2:3].reshape([-1])]
Out[17]: array([0.63263227, 0.15985692])

In [18]: indexed_shape = np.arange(np.prod(shape)).reshape(shape)[1, :2, 2:3].shape

In [19]: arr[np.arange(np.prod(shape)).reshape(shape)[1, :2, 2:3].reshape([-1])].reshape(indexed_shape)
Out[19]: 
array([[0.63263227],
       [0.15985692]])

[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von B0rG* am 02.04.2024 10:29]
02.04.2024 10:19:03  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
...
Danke... Ich versuche morgen mal zu raffen, was du da getippt hast.
02.04.2024 21:37:36  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
Ich glaube ich verstehe ungefähr, worauf du hinaus willst. Ich glaube aber, das ist bei mir nicht praktikabel.

Also

1. Die Daten liegen auf langsamen NAS shares (cloud, lel)
2. Es sind ca. 10GB pro Dataset, also wäre es schon nett, da etwas zu sparen.
3. Es sind frequenzaufgelöste, sphärische Daten, also 0 < phi < 180, -180 < theta < 180, frequenz.
4. Es ist real und imaginärteil von komplexen Zahlen interleaved.

Also haben wir bei, sagen wir mal, 180 phi Positionen, 360 theta, 200 Energien, 2 complex 25920000 Zahlen.

Im HDF5 file liegt das als 1x25920000 Matrix vor. Danke Hersteller der Software! Hierbei ist die Reihenfolge der Indices frequenz, theta, phi, complex. Also für eine Frequenz brauche ich einen Block aus dem File. Für ein theta bei allen Frequenzen brauche ich 200 Blöcke, usw.

Zu allem Überfluss rechnen wir in einem anderen Koordinatensystem, nämlich geht phi von 0 bis 2pi, theta nur 180°. Also schaufele ich die Daten auch nochmal hin und her.

Ich glaube, es gibt keine elegante "automatische" Lösung, sondern ich schreibe einfach eine Accessfunktion, die halt manuell schaut, welche Blöcke aus dem HDF5 file gelesen werden müssen.

h5py/HDF5 kann fancy indexing, aber nur mit python slices: https://stackoverflow.com/a/21790576

Deshalb muss ich mir die Chunks auch noch mit "start_index:stop_index" zusammenbauen. Wuärgs.
03.04.2024 12:36:00  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
B0rG*

Gordon
Sorry, ich musste in's nächste (total wichtige!) Meeting, deshalb war ich etwas kurz angebunden.

Der Gag vom numpy Code oben ist, dass statt auf den echten Daten die ganzen Indexing-Operationen auf einem "Index-Array" gemacht werden - wie du bestimmt mittlerweile auch herausgefunden hast.
Die Kosten davon sind dass man ein
np.arange
in der Größe der Daten initialisiert und darauf Operationen macht. In deinem Fall wären das
25920000 *  8 byte &#126; 208 MB
. Daraus macht man dann eine Liste aus 1D-Indizes, die man gerne aus der Datei holen möchte (und die du z.b. in h5py dann verwenden kannst). Man kann dann auch die Shape der Indexing-Operation kopieren, um die gesubsampleten Daten aus dem 1D-Array in die richtige Form zu bringen.

Ich glaube ich verstehe noch nicht so ganz warum es in deinem Fall nicht praktikabel ist, kannst du das ein bisschen genauer beschreiben? Mir ist auch nicht ganz klar warum die HDF5-Daten mit knapp 26 Mio Einträgen 10GB groß sind, das passt nicht ganz. 26 Mio float64 sind ja auch nur rund 200MB.

(Ich bleibe aber trotzdem dabei vielleicht einfach die Kröte zu schlucken und die Dateien in eine sinnvolle Repräsentation umzurechnen bevor man weitermacht, dir selbst zuliebe.)

---

In dem Link zum Fancy indexing steht der vielsagende Satz "Use this with caution, as the underlying HDF5 mechanisms may have different performance than you expect." - Ich würde da bisschen benchmarking anraten Augenzwinkern. Speziell auch "Very long lists (> 1000 elements) may produce poor performance".
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von B0rG* am 03.04.2024 16:56]
03.04.2024 16:54:02  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
Ich verstehe deinen Ansatz, habe ich auch überlegt. Aber ich muss das Resultat trotzdem nochmal analysieren um aus der index Liste zusammenhängende slices zu bauen, aber das kriegt man ja zur Not hin. Ich schaue mal, wie sich das in Realität verhält.
03.04.2024 17:02:13  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
B0rG*

Gordon
Das ist ja wie ein Coding-Interview hier!

 
Code:
In [1]: size=32; indices = np.arange(size)[np.random.choice([True, False], size=[size])]

In [2]: indices
Out[2]: array([ 1,  2,  4,  5,  8,  9, 10, 13, 16, 17, 19, 20, 21, 25, 30])

In [3]: diffs = np.diff(indices, prepend=-10); diffs
Out[3]: array([11,  1,  2,  1,  3,  1,  1,  3,  3,  1,  2,  1,  1,  4,  5])

In [4]: diffs == 1
Out[4]: 
array([False,  True, False,  True, False,  True,  True, False, False,
        True, False,  True,  True, False, False])

In [5]: is_consecutive_index = diffs == 1

In [6]: is_consecutive_index
Out[6]: 
array([False,  True, False,  True, False,  True,  True, False, False,
        True, False,  True,  True, False, False])

In [7]: is_start_of_slice = &#126;is_consecutive_index

In [8]: slice_start_indices = np.where(is_start_of_slice)[0]

In [9]: slice_start_indices
Out[9]: array([ 0,  2,  4,  7,  8, 10, 13, 14])

In [10]: slice_lengths = np.concatenate([np.diff(slice_start_indices), [1]])

In [11]: slice_lengths
Out[11]: array([2, 2, 3, 1, 2, 3, 1, 1])

In [12]: indices
Out[12]: array([ 1,  2,  4,  5,  8,  9, 10, 13, 16, 17, 19, 20, 21, 25, 30])

In [13]: for start, length in zip(slice_start_indices, slice_lengths):
    ...:     print(indices[start:start&#43;length])
    ...: 
[1 2]
[4 5]
[ 8  9 10]
[13]
[16 17]
[19 20 21]
[25]
[30]


e/ oh oh, das concatenatede [1] ist ein Bug. Äh, exercise for the reader.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von B0rG* am 03.04.2024 18:15]
03.04.2024 18:09:02  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
Sehr nett, wäre aber nicht nötig gewesen. Augenzwinkern ich benchmarke morgen mal
03.04.2024 18:17:07  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Strahlung-Alpha

AUP Strahlung-Alpha 19.09.2014
Interessantes Statement von einer frustrierten Akademikerin aus der Physik. Fühlte mich n bisschen an WoS erinnert peinlich/erstaunt:
11.04.2024 22:11:19  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Brot

AUP Brot 18.02.2024
<bei mir suckte es>

WARUM DIE ACADEMIA VOLLSTÄNDIG SAUGT
11.04.2024 22:19:53  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Strahlung-Alpha

AUP Strahlung-Alpha 19.09.2014
Da steckt mit Sicherheit auch ne menge Frust drin. Die Kritik finde ich aber schon berechtigt. Ich war jetzt nie nach dem Studium in der Forschung, habe aber Profs kennen gelernt die sich als Drittmittelkönig und ähnlichem bezeichnet haben.

Und die Mühle, durch die das akademische Prekariat gedreht wird ist halt schon Real. Siehe auch die neuen Tarifabschlüsse im akademischen Umfeld die solche Entwicklungen verhindern sollen.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Strahlung-Alpha am 11.04.2024 22:25]
11.04.2024 22:22:56  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Brot

AUP Brot 18.02.2024
Breites Grinsen kann in dem Begriff nicht grundlegend was Negatives sehen
11.04.2024 22:25:51  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Wraith of Seth

wraith_of_seth
Bei ihr kommt halt noch hinzu, dass sie in einem Buch von Lee Smolin schon als Postdoc als "kommender Star" verkauft wurde. Und sie hat auch einiges drauf. Dass sie keine feste Stelle bekommen hat, ist schon recht hart.

Das Video fand ich vor allem interessant, weil es wunderbar meine Vorurteile über den Autor einer bekannten Lehrbuchreihe bestätigte. (Und warum diese Lehrbücher eigentlich nur als Übungssammlungen taugen.)

And therefore never send to know for whom the bell tolls; it tolls for thee.
11.04.2024 22:36:56  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
horscht(i)

AUP horscht(i) 14.09.2014
Puh, gerade mal nachgeschaut...hatte da einen berühmten Autor in Verdacht der aber nicht am Institut von Hossenfelders Doktorarbeit war. peinlich/erstaunt
12.04.2024 0:30:25  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Wraith of Seth

wraith_of_seth
Ich kenne meine Pappenheimer. Breites Grinsen

Ich nehme an, du hast auf Nolting getippt? Breites Grinsen Noltings Bücher sind aus einem anderen Holz geschnitzt. Ich mag sie nicht, aber sie sind koheränter.

If that's poetry, don't quit your day job.
12.04.2024 0:31:51  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
horscht(i)

AUP horscht(i) 14.09.2014
Ja, Nolting. Klassiker.
Die Reihe ist halt beliebt, weil sie eine der wenigen Reihen mit Aufgaben UND Lösungen waren. Breites Grinsen
Und didaktisch fand ich sie nicht schlecht. Könnte mit denen immer gut lernen.

Ich denke aber, ihr geht es um die Reihen von Walter Greiner.

Treffer?
12.04.2024 0:36:09  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Wraith of Seth

wraith_of_seth
Versenkt. Breites Grinsen

Greiner funktioniert besser, wenn man nur eine Lösung sucht und nicht das ganze Buch lesen kann/will, weil … naja, wie sie es halt beschreibt. Es ist sehr repetitiv. Nolting ist noch kein Landau, Lifschitz, aber erfordert doch mehr lineares Lesen, um viel rauszuholen. Und ich habe nie gerafft, warum er Thermodynamik und spezielle Relativitätstheorie unbedingt in einen Band zwängen musste. Und die späteren Bücher waren mir zu "kondensiert".

Ich würde ja gerne mal selbst meine Bücher schreiben, aber dafür brauche ich die passende Stelle.

And therefore never send to know for whom the bell tolls; it tolls for thee.
12.04.2024 0:41:02  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
B0rG*

Gordon
 
Zitat von Strahlung-Alpha

Da steckt mit Sicherheit auch ne menge Frust drin. Die Kritik finde ich aber schon berechtigt.



Ich würde so ziemlich alles was sie sagt so unterschreiben. Wenn ich ein System kennengelernt habe auf das das Prädikat "patriarchal" passt, dann ja wohl die Akademia. Das gilt für Geschelchter, aber das gilt noch viel mehr für die Attitüde, dass man halt einen wichtigen Gönner braucht und schon irgendwie an den richtigen Institutionen sein muss, sonst wird's halt nix.
Ich habe meine Zeit in der Akadamia durchaus genossen, aber ich bin nicht traurig auf diesen Mist (zumindest jetzt gerade) nicht mehr angewiesen zu sein und coole Sachen in der Industrie zu machen, die ich vermutlich an der Uni nie machen könnte. Kann das nur empfehlen.
12.04.2024 10:20:41  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
Ich kann das Video auch 100% unterschreiben. Erfolg in Academia bedeutet einfach nur, dass man viele Drittmittel einwirbt. Voraussetzung dafür sind Paper und hotte topics.

--

B0rg, sorry, dass ich noch nicht geantwortet habe. Ich hab die "virtual index data" ( Breites Grinsen ) Methode getestet. Das Problem ist, dass sobald ich mehr als ein paar Slices aus dem HDF5 file lade, wird das hin-und-her mit der I/O langsamer als wenn ich stumpf die ganze Datei in den Speicher lade und alles weitere im RAM mache. Deshalb habe ich es erstmal in die Schublade gelegt.
12.04.2024 10:41:20  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
 Thema: pOT-lnformatik, Mathematik, Physik XXIV
« erste « vorherige 1 ... 13 14 15 16 [17] letzte »

mods.de - Forum » Public Offtopic » 

Hop to:  

Mod-Aktionen:
21.12.2021 11:20:27 Atomsk hat diesem Thread das ModTag 'pimp' angehängt.

| tech | impressum