Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1780to1784
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Fehler Überlauf bei Array Berechnung

VBA Fehler Überlauf bei Array Berechnung
04.09.2020 10:34:00
Johann
Hallo zusammen,
an dieser Stelle erstmal nochmals vielen Dank für eure Hilfe aus dem bereits archivierten Beitrag:
https://www.herber.de/forum/cgi-bin/callthread.pl?index=1779305
Hierdurch konnte ich mich in die Materie mit den Arrays sehr gut einlesen und auch verstehen, wie es mit den Dimensionen funktioniert.
Ich bin mit meinem Projekt schon fast fertig geworden (und ja ich versuche jeden Fehler erst selbst zu lösen). Bei dem folgen Fall komme ich einfach nicht weiter:

Function swisho(x As Double) As Double
Dim sigo As Double
sigo = x / (1 + Math.Exp(-x * 1.25))
swisho = sigo
End Function
Sub test()
Dim arr1 As Variant
ReDim arr1(1 To 2, 1 To 3)
For I = 1 To 2
For J = 1 To 3
arr1(I, J) = swisho(Rnd)
Next J
Next I
arr1(2, 2) = swisho(CDbl(arr1(1, 2)))
arr1(2, 1) = swisho(-591.105234590911)
End Sub
Hinweise
Das CDbl beim Code

arr1(2, 2) = swisho(CDbl(arr1(1, 2)))
musste sein, da sonst Typenunverträglichkeit als Fehler kommt.
Der obige Code ist nur ein Teilauszug, um das Problem zu verdeutlichen. Der errechnete Wert von -591.105234590911 habe ich aus dem Lokalfenster abgelesen.
Der Fehler "Überlauf" mit dem Laufzeitfehler 6 kommt in der folgenden Zeile:
sigo = x / (1 + Math.Exp(-x * 1.25))
Hat jemand eine Idee? Vielen Dank!

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Fehler Überlauf bei Array Berechnung
04.09.2020 10:47:22
Daniel
Hi
du erreichst mit Math.Exp die Grenzen von Double (1,79 * 10^308)
der Wert ist einfach zu groß.
Gruß Daniel
AW: VBA Fehler Überlauf bei Array Berechnung
04.09.2020 11:26:16
Johann
Danke für die schnellen Antworten.
Mein erster Gedanke wäre dann,
entweder A: eine Alternative (aber ich glaube Double ist bereits der größte Speicher)
oder B: eine Begrenzung setzen mit

IF x >= 706 THEN x = 706 ELSE x
Müsste ich gleich mal testen.
AW: VBA Fehler Überlauf bei Array Berechnung
04.09.2020 11:55:14
Daniel
Hi
kannst du einfacher machen mit MIN(x, 706)
allerdings gilt die Grenze 706 nicht für x, sondern für x * 1,25.
ob es jetzt sinnvoller ist, hier einfach den Wert zu limitieren oder dein Projekt so zu wereitern, dass solle Fälle dem Anwender auch anzuzeigen ohne einen Fehlerabbruch im Code zu erzeugen, musst du entscheiden.
Gruß Daniel
Anzeige
AW: VBA Fehler Überlauf bei Array Berechnung
04.09.2020 13:38:52
Johann
Ah, richtig...
Noch was, in der Formel Math.Exp(-x * 1.25)) sorgen die Negativzahlen für die Ausreißer.
Mit -706 bekomme ich aber dennoch eine Fehlermeldung mit dem Überlauf. Hab mich nun daran getastet bis ich auf -567 kam. Da geht er sauber durch.
also so in der vollständiger Form (für die Nachwelt einmal komplett):

Function swisho(y As Double) As Double
Dim sigo As Double
x = WorksheetFunction.Max(y * 1.25, -567#) 'höchster Wert, aber minimum -567.00
sigo = x / (1 + Math.Exp(-x * 1.25))
swisho = sigo
End Function
Sub test()
Dim arr1 As Variant
ReDim arr1(1 To 2, 1 To 3)
For I = 1 To 2
For J = 1 To 3
arr1(I, J) = swisho(Rnd)
Next J
Next I
arr1(2, 2) = swisho(CDbl(arr1(1, 2)))
arr1(2, 1) = swisho(-591.105234590911)
End Sub
INFOS ZU MEINEM PROJEKT
Für alle, die es nachvollziehen wollen: Ich versuche die Künstliche Intelligenz nachzuberechnen. Diese wird überwiegend (hauptsächlich) mit Python bewerkstelligt. Da mir VBA zurzeit wesentlich mehr liegt, will ich das mit Python realsieren.
Der oben genannte Code ist die Aktivierungs Funktion für einen Neuron namens Swish, die angeblich das Google Brain Team entwickelt hat.
Das Problem mit Überlauf konnte ich auch bei den Python Programmiern gerade herausfinden. Hier der Beitrag (mit Google Translator übersetztz):
https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=en&sp=nmt4&tl=de&u=https://stackoverflow.com/questions/23128401/overflow-error-in-neural-networks-implementation&usg=ALkJrhjKTZom_4LrntXS6U-tjCVJ0KzCaQ
Anzeige
AW: VBA Fehler Überlauf bei Array Berechnung
04.09.2020 13:40:52
Johann
Meine natürlich:
"Da mir VBA zurzeit wesentlich mehr liegt, will ich das mit VBA realsieren."
AW: VBA Fehler Überlauf bei Array Berechnung
04.09.2020 11:13:37
Nepumuk
Hallo Johann,
die Exp-Funktion kann maximal Werte bis ±709,782712893 berechnen. Danach kommt der Überlauf.
Gruß
Nepumuk
AW: VBA Fehler Überlauf bei Array Berechnung
04.09.2020 11:30:31
Johann
Hallo Nepumuk,
weißt du zufällig, ob dieses Problem generell auch bei anderen Programiersprachen gilt?
Weil das Projekt, dass ich zurzeit mit VBA realisieren möchte, beruht auf Python Code. Dort wird dieses Problem nicht erwähnt.
AW: VBA Fehler Überlauf bei Array Berechnung
04.09.2020 11:36:53
Nepumuk
Hallo Johann,
keine Ahnung, ich kenne Python nicht und andere Programmiersprachen sind zu lange her.
Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige