Wenn ich mich vorstelle, bin ich ein Schüler der 4. Klasse, der eine naturwissenschaftliche Universität in Tokio besucht, und da ich die Schule abschließen werde, werde ich für die nächsten 2 Jahre ein Moratorium sein > < Ich suche einen Teilzeitjob in einem Unternehmen wie maschinelles Lernen lol. Wenn Sie eine Personalabteilung haben, kontaktieren Sie mich bitte lol Ich höre oft das Wort maschinelles Lernen / KI, das ich oft in der Welt höre, in meinem Labor, aber ich glaube, ich verstehe die Theorie ein wenig: "CNN? RNN? Falten? Boltzmann-Maschine? Normalisierung?" Ich habe es noch nie zuvor gemacht, daher denke ich, dass ich versuchen werde, eine KI basierend auf meinem Favoriten "Nogisaka 46 / Keyakizaka 46" zu erstellen. Mein Erfahrungswert ist fast 0, also hoffe ich, dass Sie ihn als Graffiti für Anfänger sehen können. Ich möchte am Ende tief über Idole schreiben lol
Wenn Sie kein Ziel für das, was gemacht werden soll, festlegen, wird es nicht gestartet. Setzen Sie sich also ein Ziel. In meiner Interpretation ist maschinelles Lernen ein egoistisches Verständnis einer Funktion, die "eine probabilistische Kennzeichnung" aus einem "Datensatz" zurückgibt. Als ich darüber nachdachte, eine KI basierend auf Nogisaka und Keyakizaka zu erstellen, kam mir die Idee einer "KI, die die Mitglieder auf dem Foto des Mitglieds automatisch klassifiziert und speichert" lol Ich dachte, es wäre schön, eine KI zu haben, die bestimmt, wer in welchem Part singt, wenn ein Lied eingefügt wird, aber da ich die Spracherkennung noch nicht verstanden habe, würde ich es gerne versuchen, nachdem die Bildidentifikation abgeschlossen ist. Überlegen.
Nachdem wir uns das Ziel gesetzt haben, eine "KI zu erstellen, die die Mitglieder auf dem Foto des Mitglieds automatisch klassifiziert und speichert", möchte ich die Mittel auswählen, um dieses Ziel zu erreichen. Es gibt viele Frameworks wie TensorFlow, Chainer, Caffe, die ich im Bereich des maschinellen Lernens oft höre, aber dieses Mal möchte ich eine ähnliche KI mit Tensorflow und Chainer erstellen und vergleichen. Ich habe gehört, dass Caffe als Dämon installiert ist, also habe ich Caffe lol vermieden
Daher möchte ich Python, Tensorflow und Chainer auf meinem PC installieren. Viele Leute haben Artikel darüber gepostet, deshalb werde ich diesmal darauf verzichten. Wenn Sie diese als Referenz lesen, können Sie die oben genannten drei möglicherweise auf Ihrem eigenen PC installieren.
Ich konnte es so sicher installieren.
Da ich TensorFlow und Chainer eingeführt habe, werde ich versuchen, dies zu demonstrieren, einschließlich der Bestätigung, dass es tatsächlich ordnungsgemäß mit numerischen MNIST-Daten funktioniert. MNIST ist fast immer das erste, was im Bereich des maschinellen Lernens auftaucht, und ist ein Datensatz handgeschriebener Zahlen. Werfen Sie diese in Frameworks wie TensorFlow und Chainer, um zu sehen, ob sie gelernt und identifiziert werden können. Es gibt fast keine schwierige Aufgabe wie Hello World, wenn man in anderen Sprachen lernt, also würde ich es gerne tun (es ist schwierig, die Theorie zu verstehen). Der eigentliche Code sieht folgendermaßen aus:
tf_mnist.py
import argparse
import sys
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
FLAGS = None
def main(_):
#Daten lesen
mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True)
#Deklarieren Sie Eingaben, Gewichte, Verzerrungen und Ausgaben. 784=28*28, 1 Pixel 1 Bit Eingang
x = tf.placeholder(tf.float32, [None, 784])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
y = tf.matmul(x, W) + b
#Variable y zur Eingabe der Antwort bei der Berechnung der Kreuzentropie_Erklären
y_ = tf.placeholder(tf.float32, [None, 10])
#Berechnen Sie die Kreuzentropie
cross_entropy = tf.reduce_mean(
tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
sess = tf.InteractiveSession()
tf.global_variables_initializer().run()
#Lernen
for _ in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
#Berechnen Sie die richtige Antwortrate zwischen der tatsächlichen Antwort und dem Lernmodell
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print(sess.run(accuracy, feed_dict={x: mnist.test.images,
y_: mnist.test.labels}))
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--data_dir', type=str, default='/tmp/tensorflow/mnist/input_data',
help='Directory for storing input data')
FLAGS, unparsed = parser.parse_known_args()
tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)
ch_mnist.py
from __future__ import print_function
import argparse
import chainer
import chainer.functions as F
import chainer.links as L
from chainer import training
from chainer.training import extensions
#Definieren Sie ein neuronales Netzwerk
class MLP(chainer.Chain):
def __init__(self, n_units, n_out):
super(MLP, self).__init__()
with self.init_scope():
# the size of the inputs to each layer will be inferred
self.l1 = L.Linear(None, n_units) # n_in -> n_units
self.l2 = L.Linear(None, n_units) # n_units -> n_units
self.l3 = L.Linear(None, n_out) # n_units -> n_out
def __call__(self, x):
h1 = F.relu(self.l1(x))
h2 = F.relu(self.l2(h1))
return self.l3(h2)
def main():
#Stellen Sie Einstellungen in der Befehlszeile vor
parser = argparse.ArgumentParser(description='Chainer example: MNIST')
parser.add_argument('--batchsize', '-b', type=int, default=100,
help='Number of images in each mini-batch')
parser.add_argument('--epoch', '-e', type=int, default=20,
help='Number of sweeps over the dataset to train')
parser.add_argument('--frequency', '-f', type=int, default=-1,
help='Frequency of taking a snapshot')
parser.add_argument('--gpu', '-g', type=int, default=-1,
help='GPU ID (negative value indicates CPU)')
parser.add_argument('--out', '-o', default='result',
help='Directory to output the result')
parser.add_argument('--resume', '-r', default='',
help='Resume the training from snapshot')
parser.add_argument('--unit', '-u', type=int, default=1000,
help='Number of units')
args = parser.parse_args()
print('GPU: {}'.format(args.gpu))
print('# unit: {}'.format(args.unit))
print('# Minibatch-size: {}'.format(args.batchsize))
print('# epoch: {}'.format(args.epoch))
print('')
# Set up a neural network to train
# Classifier reports softmax cross entropy loss and accuracy at every
# iteration, which will be used by the PrintReport extension below.
model = L.Classifier(MLP(args.unit, 10))
if args.gpu >= 0:
# Make a specified GPU current
chainer.cuda.get_device_from_id(args.gpu).use()
model.to_gpu() # Copy the model to the GPU
# Setup an optimizer
optimizer = chainer.optimizers.Adam()
optimizer.setup(model)
#Dateninitialisierungszug und Testdaten werden vorbereitet
train, test = chainer.datasets.get_mnist()
#Wenn Sie hier Daten in den Iterator einfügen, wird mit dem Lernen fortgefahren
train_iter = chainer.iterators.SerialIterator(train, args.batchsize)
test_iter = chainer.iterators.SerialIterator(test, args.batchsize,
repeat=False, shuffle=False)
# Set up a trainer
updater = training.StandardUpdater(train_iter, optimizer, device=args.gpu)
trainer = training.Trainer(updater, (args.epoch, 'epoch'), out=args.out)
# Evaluate the model with the test dataset for each epoch
trainer.extend(extensions.Evaluator(test_iter, model, device=args.gpu))
# Dump a computational graph from 'loss' variable at the first iteration
# The "main" refers to the target link of the "main" optimizer.
trainer.extend(extensions.dump_graph('main/loss'))
# Take a snapshot for each specified epoch
frequency = args.epoch if args.frequency == -1 else max(1, args.frequency)
trainer.extend(extensions.snapshot(), trigger=(frequency, 'epoch'))
# Write a log of evaluation statistics for each epoch
trainer.extend(extensions.LogReport())
# Save two plot images to the result dir
if extensions.PlotReport.available():
trainer.extend(
extensions.PlotReport(['main/loss', 'validation/main/loss'],
'epoch', file_name='loss.png'))
trainer.extend(
extensions.PlotReport(
['main/accuracy', 'validation/main/accuracy'],
'epoch', file_name='accuracy.png'))
# Print selected entries of the log to stdout
# Here "main" refers to the target link of the "main" optimizer again, and
# "validation" refers to the default name of the Evaluator extension.
# Entries other than 'epoch' are reported by the Classifier link, called by
# either the updater or the evaluator.
trainer.extend(extensions.PrintReport(
['epoch', 'main/loss', 'validation/main/loss',
'main/accuracy', 'validation/main/accuracy', 'elapsed_time']))
# Print a progress bar to stdout
trainer.extend(extensions.ProgressBar())
if args.resume:
# Resume from a snapshot
chainer.serializers.load_npz(args.resume, trainer)
# Run the training
trainer.run()
if __name__ == '__main__':
main()
Dies ist die im TensorFlow, Chainer-Tutorial, und wenn Sie den Google-Lehrer fragen, wird sie sofort gelöscht, lol Das Ergebnis wurde wie folgt ausgegeben und es wurde bestätigt, dass sowohl TensorFlow als auch Chainer handschriftliche Zahlen fest lernen konnten.
Das nächste Mal möchte ich über das Sammeln von Datensätzen für die tatsächliche Bilderkennung berichten. Ich hoffe du kannst es lesen.
Es ist keine Übertreibung zu sagen, dass ich diesmal gepostet habe, weil ich dieses lol schreiben wollte Ich bin ein Dollar-Otaku, der Nogisaka 46 und Keyakizaka46 jagt, aber die empfohlenen Männer sind Mittsommer Akimoto, Miri Watanabe und __Fumiho Kato __ (1 empfohlen). Bitte kontaktieren Sie mich, wenn Sie die Möglichkeit haben, sich mit allen Live-Auftritten zu treffen lol ← Ich habe an ziemlich vielen Live-Auftritten teilgenommen, aber ich werde das nächste Mal mehr darüber schreiben, also werde ich es dieses Mal weglassen. Ich habe überhaupt nicht die Hand geschüttelt w Geht es um die Selbsteinführung über die Piste? .. .. Die Ereignisse, die für die Teilnahme am Krieg geplant sind, sind alle Tsu Niigata und Tokyo Dome (geplant). In letzter Zeit ist die Dynamik der Mitglieder der 3. Generation so groß, dass ich überhaupt kein Ticket bekommen kann. Ich habe AiiA, die dritte Amtszeit allein, und die Prinzessin, die mich getötet hat, entfernt. Bitte machen Sie verschiedene Dinge mit dem Management. (So nehme ich auch fest die 3. Amtszeit Einzelgriff lol) Ich habe vor, Kato Fumihos Handshake-Ticket am 5. Keyaki zu stapeln, danke an Toshi-chan. Qiitas Operation ist strenge Zensur, aber wenn dieser Artikel gelöscht wird, werde ich ihn erneut veröffentlichen lol
Recommended Posts