[PYTHON] Ich habe ein VGG16-Modell mit TensorFlow gemacht (unterwegs)

Einführung

――Ich werde Python nach langer Zeit berühren. Ich bin jetzt süchtig danach, daher möchte ich nur den Inhalt und die Ausführungsergebnisse veröffentlichen und im Laufe der Zeit aktualisieren.

Annahme

Implementierung

Referenz

http://tensorflow.classcat.com/2016/10/18/tensorflow-vgg-model/

Programm

network.py


#!/usr/local/bin/python
# -*- coding: utf-8 -*-

import numpy as np
import tensorflow as tf

def vgg16(image, keep_prob):

    def weight_variable(shape):
        initial = tf.truncated_normal(shape, stddev=0.1)
        return tf.Variable(initial)

    def bias_variable(shape):
        initial = tf.constant(0.1, shape=shape)
        return tf.Variable(initial)

    def conv2d(conv, weight):
        return tf.nn.conv2d(conv, weight, strides=[1, 1, 1, 1], padding='SAME')

    def max_pool_2x2(conv):
        return tf.nn.max_pool(conv, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')

    with tf.name_scope('conv1_1') as scope:
        weight = weight_variable([3, 3, 3, 64])
        bias = bias_variable([64])
        conv = conv2d(image, weight)
        out = tf.nn.bias_add(conv, bias)
        conv1_1 = tf.nn.relu(out, name=scope)

    with tf.name_scope('conv1_2') as scope:
        weight = weight_variable([3, 3, 64, 64])
        bias = bias_variable([64])
        conv = conv2d(conv1_1, weight)
        out = tf.nn.bias_add(conv, bias)
        conv1_2 = tf.nn.relu(out, name=scope)

    with tf.name_scope('pool1') as scope:
        pool1 = max_pool_2x2(conv1_2)

    with tf.name_scope('conv2_1') as scope:
        weight = weight_variable([3, 3, 64, 128])
        bias = bias_variable([128])
        conv = conv2d(pool1, weight)
        out = tf.nn.bias_add(conv, bias)
        conv2_1 = tf.nn.relu(out, name=scope)

    with tf.name_scope('conv2_2') as scope:
        weight = weight_variable([3, 3, 128, 128])
        bias = bias_variable([128])
        conv = conv2d(conv2_1, weight)
        out = tf.nn.bias_add(conv, bias)
        conv2_2 = tf.nn.relu(out, name=scope)

    with tf.name_scope('pool2') as scope:
        pool2 = max_pool_2x2(conv2_2)

    with tf.name_scope('conv3_1') as scope:
        weight = weight_variable([3, 3, 128, 256])
        bias = bias_variable([256])
        conv = conv2d(pool2, weight)
        out = tf.nn.bias_add(conv, bias)
        conv3_1 = tf.nn.relu(out, name=scope)

    with tf.name_scope('conv3_2') as scope:
        weight = weight_variable([3, 3, 256, 256])
        bias = bias_variable([256])
        conv = conv2d(conv3_1, weight)
        out = tf.nn.bias_add(conv, bias)
        conv3_2 = tf.nn.relu(out, name=scope)

    with tf.name_scope('conv3_3') as scope:
        weight = weight_variable([3, 3, 256, 256])
        bias = bias_variable([256])
        conv = conv2d(conv3_2, weight)
        out = tf.nn.bias_add(conv, bias)
        conv3_3 = tf.nn.relu(out, name=scope)

    with tf.name_scope('pool3') as scope:
        pool3 = max_pool_2x2(conv3_3)

    with tf.name_scope('conv4_1') as scope:
        weight = weight_variable([3, 3, 256, 512])
        bias = bias_variable([512])
        conv = conv2d(pool3, weight)
        out = tf.nn.bias_add(conv, bias)
        conv4_1 = tf.nn.relu(out, name=scope)

    with tf.name_scope('conv4_2') as scope:
        weight = weight_variable([3, 3, 512, 512])
        bias = bias_variable([512])
        conv = conv2d(conv4_1, weight)
        out = tf.nn.bias_add(conv, bias)
        conv4_2 = tf.nn.relu(out, name=scope)

    with tf.name_scope('conv4_3') as scope:
        weight = weight_variable([3, 3, 512, 512])
        bias = bias_variable([512])
        conv = conv2d(conv4_2, weight)
        out = tf.nn.bias_add(conv, bias)
        conv4_3 = tf.nn.relu(out, name=scope)

    with tf.name_scope('pool4') as scope:
        pool4 = max_pool_2x2(conv4_3)

    with tf.name_scope('conv5_1') as scope:
        weight = weight_variable([3, 3, 512, 512])
        bias = bias_variable([512])
        conv = conv2d(pool4, weight)
        out = tf.nn.bias_add(conv, bias)
        conv5_1 = tf.nn.relu(out, name=scope)

    with tf.name_scope('conv5_2') as scope:
        weight = weight_variable([3, 3, 512, 512])
        bias = bias_variable([512])
        conv = conv2d(conv5_1, weight)
        out = tf.nn.bias_add(conv, bias)
        conv5_2 = tf.nn.relu(out, name=scope)

    with tf.name_scope('conv5_3') as scope:
        weight = weight_variable([3, 3, 512, 512])
        bias = bias_variable([512])
        conv = conv2d(conv5_2, weight)
        out = tf.nn.bias_add(conv, bias)
        conv5_3 = tf.nn.relu(out, name=scope)

    with tf.name_scope('pool5') as scope:
        pool5 = max_pool_2x2(conv5_3)

    with tf.name_scope('fc6') as scope:
        shape = int(np.prod(pool5.get_shape()[1:]))
        weight = weight_variable([shape, 4096])
        bias = bias_variable([4096])
        pool5_flat = tf.reshape(pool5, [-1, shape])
        fc6 = tf.nn.relu(tf.nn.bias_add(tf.matmul(pool5_flat, weight), bias))
        # fc6_drop = tf.nn.dropout(fc6, keep_prob)

    with tf.name_scope('fc7') as scope:
        weight = weight_variable([4096, 4096])
        bias = bias_variable([4096])
        fc7 = tf.nn.relu(tf.nn.bias_add(tf.matmul(fc6, weight), bias))
        # fc7_drop = tf.nn.dropout(fc7, keep_prob)

    with tf.name_scope('fc8') as scope:
        weight = weight_variable([4096, 3])
        bias = bias_variable([3])
        fc8 = tf.nn.bias_add(tf.matmul(fc7, weight), bias)

    with tf.name_scope('softmax') as scope:
        probs = tf.nn.softmax(fc8)

    return probs

Ausführungsergebnis

Lernen geht überhaupt nicht weiter!

2017-08-01 17:39:33.518478: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-08-01 17:39:33.518513: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2017-08-01 17:39:33.518523: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2017-08-01 17:39:33.518532: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.
step 0, training accuracy 0.588235
step 1, training accuracy 0.588235
step 2, training accuracy 0.588235
step 3, training accuracy 0.588235
step 4, training accuracy 0.588235
step 5, training accuracy 0.588235
step 6, training accuracy 0.588235
step 7, training accuracy 0.588235

Visualisierung

Als Komposition scheint es richtig zu sein, aber ...

FireShot Capture 041 - TensorBoard - http___localhost_6006_#graphs.jpg

Was ich versucht habe

――Ich habe versucht, die Anzahl der Schichten zu reduzieren. → Keine Änderung.

――Ich habe die Trainingsdaten geändert. → Keine Änderung.

――Die Notation bleibt gleich, und ich habe sie in die normale CNN-Schicht geändert. → Das Lernen wurde normal durchgeführt.

(゚ д ゚)

Recommended Posts

Ich habe ein VGG16-Modell mit TensorFlow gemacht (unterwegs)
Ich habe mit dem TensorFlow --⑦ Lernmodell einen Dir en grey Gesichtsklassifikator erstellt
Ich habe einen Line-Bot mit Python gemacht!
Ich habe versucht, das CNN-Modell von TensorFlow mit TF-Slim umzugestalten
Ich habe versucht, ein Deep-Learning-Modell von TensorFlow mit TensorFlow Serving zu hosten
Ich habe eine Funktion erstellt, um das Modell von DCGAN zu überprüfen
Ich habe eine Demo erstellt, mit der das in Tensorflows Mnist-Tutorial trainierte Modell die handgeschriebenen Zahlen auf der Leinwand unterscheiden kann.
Ich habe mit TensorFlow - (1) Introduction einen Dir en grey face-Klassifikator erstellt
Ich habe mit der TensorFlow-④-Gesichtsextraktion einen Dir en grey-Gesichtsklassifikator erstellt
[Kaggle] Ich habe mit dem Titanic-Tutorial eine Sammlung von Problemen erstellt
Ich habe versucht, ○ ✕ mit TensorFlow zu spielen
Anfänger: Ich habe einen Launcher mit dem Wörterbuch erstellt
Ich habe eine TensorFlow-Umgebung mit Windows 10 erstellt
Ich habe mit dem TensorFlow --⑩ Gesichtsklassifizierungstest einen Dir-Grau-Gesichtsklassifikator erstellt
Ich habe einen Küchentimer erstellt, der in der Statusleiste angezeigt wird!
Ich habe mit dem Lernprogramm TensorFlow --⑥ einen Dir en grey face-Klassifikator erstellt
Ich habe mit TensorFlow - Dir Playing (final) einen Dir en grey face-Klassifikator erstellt.
Ich habe mit TensorFlow --⑧ Learning Execution einen Dir en Grey Face Classifier erstellt
Ich habe mit TensorFlow --⑫ Web Release einen Dir en Grey Face Classifier erstellt
Ich habe mit der TensorFlow --② - Umgebungskonstruktion einen Dir en grey face-Klassifikator erstellt
Erstellt ein Bildunterscheidungsmodell (cifar10) unter Verwendung eines Faltungs-Neuronalen Netzwerks
Eine süchtig machende Geschichte bei der Verwendung von Tensorflow unter Android
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Erstellen Sie eine GUI auf dem Terminal mit Flüchen
Ich habe ein wenig über die Klasse recherchiert
Ich habe einen LINE BOT erstellt, der mithilfe der Flickr-API ein Bild von Reis-Terroristen zurückgibt
Erstellen Sie eine REST-API mit dem in Lobe und TensorFlow Serving erlernten Modell.
Ich habe mit TensorFlow --⑪ Web Release Preparation einen Dir en Grey Face Classifier erstellt
Ich habe ein Programm erstellt, um Wörter im Fenster nachzuschlagen (vorherige Entwicklung)
Ich habe ein Skript erstellt, das das aktive Fenster mit win32gui von Python aufzeichnet
〇✕ Ich habe ein Spiel gemacht
Ich habe einen Anmelde- / Abmeldevorgang mit Python's Bottle durchgeführt.
Ich habe versucht, ein Beispielmodell von Pytorch mit TorchServe zu hosten
Ich habe einen Code erstellt, um illustration2vec in ein Keras-Modell zu konvertieren
Ich habe eine Python3-Umgebung unter Ubuntu mit direnv erstellt.
Machen Sie das Modell zu einer Zeichenfolge in der Django-HTML-Vorlage
Ich habe einen Befehl zum Markieren des Tabellenclips gegeben
Ich habe mit Ren’py ein Einführungsspiel für das Schulfest gemacht
Ich möchte einen Screenshot der Site in Docker mit einer beliebigen Schriftart erstellen
Implementierung von VGG16 mit Keras, die ohne Verwendung eines trainierten Modells erstellt wurden
Ich habe einen schnellen Feed-Reader mit Feedparser in Python erstellt
Ich habe ein Punktbild des Bildes von Irasutoya gemacht. (Teil 1)
Ich habe ein Anomalieerkennungsmodell erstellt, das unter iOS funktioniert
Ich habe einen Python-Text gemacht
Ich habe versucht, Magenta / TensorFlow zu verwenden
Ich habe einen Zwietrachtbot gemacht
Versuchen Sie, eine multimodale Verteilung mithilfe des EM-Algorithmus zu modellieren
Ich habe ein Punktbild des Bildes von Irasutoya gemacht. (Teil 2)
Ich habe mit dem Qore SDK eine App zum Schätzen des Muskeltrainings erstellt
Ich habe einen Original-Programmführer mit der NHK-Programmführer-API erstellt.
Ich habe Chatbot mit LINE Messaging API und Python erstellt
Ich habe einen neuronalen Netzwerkgenerator erstellt, der auf FPGA läuft
[Für Anfänger] Ich habe versucht, die Tensorflow-Objekterkennungs-API zu verwenden
Ich habe versucht, "Asciichart Py" zu verwenden, mit dem mit Python ein schönes Diagramm auf der Konsole gezeichnet werden kann.
[Python] Ich habe versucht, mit argparse ein einfaches Programm zu erstellen, das in der Befehlszeile funktioniert
Ich habe versucht, ein Programm zu erstellen, um die Fehlersuche von Saiseriya zu lösen (Hinweis)
Steuern Sie den Motor mit einem Motortreiber mit Python auf Raspberry Pi 3!