Sony beschleunigt die Entwicklung der KI. Open Source der Deep Learning-Kernbibliothek
SONY hat eine eigene Deep Learning-Bibliothek als Open Source veröffentlicht. Offizielle Website Klicken Sie hier, wenn Sie interessiert sind
Tut Japan nicht sein Bestes, was in einigen Gebieten als unterentwickeltes Land lächerlich gemacht wird? Insbesondere große japanische Unternehmen hören keine guten Gerüchte über Software-Angelegenheiten ...
Über SONY ist ein solcher Blog in letzter Zeit ein heißes Thema geworden ... Aus der Sony Corporation ausgeschieden
Es ist eine große Firma, also weiß ich nicht, ob alles so ist wie in diesem Blog. Ich bin sicher, ich hatte keinen guten Eindruck. Persönlich habe ich keine Lust, es zu unterstützen, weil es ein japanisches Unternehmen ist. Da es eine große Sache ist, schreiben wir einen Eindruck von der Nutzung der Bibliothek auf Qiita!
Klicken Sie hier, um den Code anzuzeigen
Vorerst habe ich es getan, indem ich es besiegt habe. Ja. Mach dir keine Sorgen über die schlechte Qualität. ~~ Ich wollte zuerst in Qiita einen Artikel über die Verwendung von NNabla schreiben, daher ist dies das Ergebnis der schnellen Fertigstellung! !! !! ~~ Sorgen Sie sich nicht um die Genauigkeit, da Sie keine Zeit haben und das Modell hervorragend geeignet ist. .. Ich wollte nur die API berühren. ..
main.py
def convolution(x):
x = x.reshape([BATCH_SIZE, IMAGE_DEPTH, IMAGE_HEIGHT, IMAGE_WIDTH])
with nn.parameter_scope("conv1"):
output = PF.convolution(x, 16, (5, 5), stride=(2, 2), pad=(1, 1))
output = F.relu(output)
with nn.parameter_scope("conv2"):
output = PF.convolution(output, 32, (3, 3), stride=(1, 1), pad=(1, 1))
output = F.relu(output)
with nn.parameter_scope("conv3"):
output = PF.convolution(output, 64, (3, 3), stride=(1, 1), pad=(1, 1))
output = F.relu(output)
output = output.reshape([BATCH_SIZE, int(output.size / BATCH_SIZE)])
with nn.parameter_scope("fc1"):
output = PF.affine(output, 1024)
output = F.relu(output)
with nn.parameter_scope("fc2"):
output = PF.affine(output, 256)
output = F.relu(output)
with nn.parameter_scope("softmax"):
output = PF.affine(output, 10)
output = F.softmax(output)
return output
Es ist so ein CNN. Die API-Referenz Parametric Functions ist eine abstrakte API, die die Netzwerkdefinition ziemlich einfach macht. Die unterste Ebene ist this. (Ich habe es mir nicht im Detail angesehen ...)
Step: 00290 Train loss: 7.17657 Train accuracy: 0.34375
Step: 00300 Test loss: 7.22971 Test accuracy: 0.34990
Step: 00300 Train loss: 7.23585 Train accuracy: 0.28125
Step: 00310 Train loss: 7.26531 Train accuracy: 0.28125
Step: 00320 Train loss: 7.15616 Train accuracy: 0.37500
Step: 00330 Train loss: 7.19948 Train accuracy: 0.29688
Step: 00340 Train loss: 7.23404 Train accuracy: 0.26562
Step: 00350 Train loss: 7.13390 Train accuracy: 0.42188
Step: 00360 Train loss: 7.27805 Train accuracy: 0.20312
Step: 00370 Train loss: 7.08152 Train accuracy: 0.46875
Step: 00380 Train loss: 7.17094 Train accuracy: 0.34375
Step: 00390 Train loss: 7.12861 Train accuracy: 0.39062
Step: 00400 Test loss: 7.21064 Test accuracy: 0.36996
Das Ausführungsergebnis wird wie folgt an die Konsole ausgegeben. Es fühlt sich leichter an, als ein ähnliches Netzwerk in TensorFlow zu schreiben.
Normalerweise berühre ich nur TensorFlow, und tatsächlich habe ich nie andere Deep Learning-Bibliotheken als TF verwendet. .. Es ist peinlich. Ich habe Kratzer verwendet, um mein Verständnis zu vertiefen.
Um ehrlich zu sein, habe ich keine großen Schwierigkeiten. Wenn Sie andere Bibliotheken verwendet haben, können Sie diese ohne Beschwerden verwenden? Es ist einfach, weil Sie abstrakte Ebenen definieren können. Ich kann nichts sagen, weil ich keine anderen Bibliotheken verwendet habe, aber ich könnte diese Art von Code auf die gleiche Weise verwenden.
Apropos schwierige Punkte: Es ist lange her, dass ich das python2-System verwendet habe. Ich habe die Spezifikation der int-Division völlig vergessen.
main.py
def accuracy(p, t):
pred_and_label = [(np.argmax(_p), np.argmax(_t)) for _p, _t in zip(p.d, t.d)]
return float(len(filter(lambda x: x[0] == x[1], pred_and_label))) / float(len(p.d))
Ich berechne hier die richtige Antwortrate des Ausgabeergebnisses. Dieser Typ blieb die ganze Zeit bei 0 und ich dachte eine Weile, dass es seltsam war. .. Dies wurde so korrigiert, dass es schwebt, sodass es ordnungsgemäß ausgegeben wird.
~~ Hmm. Ich benutze Python3 also hauptsächlich für geschäftliche Zwecke Ich möchte hier so schnell wie möglich 3 Systeme unterstützen. ~~ Es scheint, dass es Python3 unterstützt! Danke für deinen Kommentar! (18.08.2017)
Vielleicht hatte ich es schwer, oder vielleicht konnte ich es einfach nicht finden, weil ich keine Zeit hatte, Ich konnte in der Formdefinition von TensorFlow nichts finden, was None entspricht. Diejenige, die eine Form wie [?, 3, 64, 64] definiert. Wenn man sich den Code auf Github of Sample ansieht, scheint es, dass die Testdaten durch Wiederholen von Chargen der gleichen Größe wie beim Training berechnet wurden, also habe ich das auch getan. Um ehrlich zu sein, glaube ich nicht, dass Sie nur eine feste Losgröße verwenden können, also frage ich mich, ob es einen Weg gibt. .. Lassen Sie uns diesen Bereich später untersuchen. ~~ Wenn du Zeit hast! !! ~~
~~ Verwenden Sie persönlich TensorFlow ~~ Ich möchte, dass der Deep Learning-Bereich aufgeregt wird, und ich möchte, dass Sie Ihr Bestes geben. Wenn ich Freizeit habe, sollte ich sie mehr anfassen und ziehen.
Außerdem mache ich mir ein wenig Sorgen um dieses DynamicNN, also werde ich es erneut berühren, wenn ich Zeit habe. Es klingt wie ein Multi-Paradigma von Define by Run und Define and Run.
Bitte lassen Sie mich wissen, wenn etwas nicht stimmt! !!
Recommended Posts