Darkflow: Tensorfluss-Tensor-Umformfehler

Erstellt am 8. Apr. 2017  ·  3Kommentare  ·  Quelle: thtrieu/darkflow

Ich versuche, Yolo mit meinem eigenen Datensatz zu trainieren. Ich konnte erfolgreich an 10 Bildern mit 2 Objekten trainieren. Die Schlussfolgerung funktioniert gut.

Jetzt versuche ich mit dem vollständigen Datensatz von 6000 Bildern zu trainieren und erhalte eine Fehlermeldung.
Das cmd, mit dem ich trainiere:
./flow --train --dataset /home/ubuntu/datasets/img/ --annotation /home/ubuntu/datasets/anno/ --model cfg/yolo-17c.cfg --load bin/yolo.weights --keep 5 --epoch 30000 --save 1000 --lr 0.00001 --batch 16 --gpu .8

Der eigentliche Fehler:

Verursacht durch op 'Reshape', definiert unter:
Datei "./flow", Zeile 44, in
tfnet = TFNet(FLAGS)
Datei "/home/ubuntu/darkflow/net/build.py", Zeile 63, in __init__
self.setup_meta_ops()
Datei "/home/ubuntu/darkflow/net/build.py", Zeile 106, in setup_meta_ops
wenn self.FLAGS.train: self.build_train_op()
Datei "/home/ubuntu/darkflow/net/help.py", Zeile 15, in build_train_op
self.framework.loss(self.out)
Datei "/home/ubuntu/darkflow/net/yolov2/train.py", Zeile 56, in Verlust
net_out_reshape = tf.reshape(net_out, [-1, H, W, B, (4 + 1 + C)])
Datei "/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/ops/gen_array_ops.py", Zeile 2630, in Umformung
Name=Name)
Datei "/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py", Zeile 763, in apply_op
op_def=op_def)
Datei "/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", Zeile 2327, in create_op
original_op=self._default_original_op, op_def=op_def)
Datei "/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", Zeile 1226, in __init__
self._traceback = _extract_stack()
InvalidArgumentError (siehe oben für Traceback): Die Eingabe zum Umformen ist ein Tensor mit 1149200 Werten, aber die angeforderte Form erfordert ein Vielfaches von 18590
[[Node: Reshape = Reshape[T=DT_FLOAT, Tshape=DT_INT32, _device="/ job:localhost/ replica :0/ task:0/gpu :0"](Ausgabe, Reshape/shape)]]
[[Node: mul_30/_195 = _Recv[client_terminated=false, recv_device="/ job:localhost/ replica :0/ task:0/cpu :0", send_device="/ job:localhost/ replica :0/ task:0 /gpu :0", send_device_incarnation=1, tensor_name="edge_188_mul_30", tensor_type=DT_FLOAT, _device="/ job:localhost/ replica :0/ task:0/cpu :0"]()]]

Meine Datei labels.txt hat 17 Labels.
Die Änderungen, die ich an der yolo-17c.cfg vorgenommen habe, sind:
filters=125 für die letzte Schicht habe ich das auch mit 425 und 35 versucht
classes=17 basierend auf der Anzahl der Klassen

Mir ist klar, dass die Zahl 18590 mit width=416, height=416 verknüpft ist, wenn ich sie in width=224, height=224 ändere, bekomme ich
...but the requested shape requires a multiple of 21560

@thtrieu , @Dhruv-Mohan , @abagshaw haben Sie eine Idee, warum ich diesen Fehler

Danke für die Hilfe

Hilfreichster Kommentar

Sie müssen filters=110 für die letzte Conv festlegen. Schicht.
Es muss auf dieser Formel basieren:
filter= #num * (#classes + 5)

[faltend]
Größe=1
Schritt = 1
pad=1
Filter=110
Aktivierung=linear
[Region]
Anker = 0.738768,0.874946, 2.42204,2.65704, 4.30971,7.04493, 10.246,4.59428, 12.6868,11.8741

Ich hoffe, das hilft

Alle 3 Kommentare

Sie müssen filters=110 für die letzte Conv festlegen. Schicht.
Es muss auf dieser Formel basieren:
filter= #num * (#classes + 5)

[faltend]
Größe=1
Schritt = 1
pad=1
Filter=110
Aktivierung=linear
[Region]
Anker = 0.738768,0.874946, 2.42204,2.65704, 4.30971,7.04493, 10.246,4.59428, 12.6868,11.8741

Ich hoffe, das hilft

@1NNcoder Bitte sagen Sie, ob das Problem bereits behoben ist? Wenn dies der Fall ist, können Sie es schließen und den Platz für andere Personen freimachen :)

Ja das funktioniert

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen