2017-12-12 1 views
0

Ich arbeite mit Tensorflow, aber ich bin ziemlich neu in Python und maschinelles Lernen. Wenn ich einen Tensor eines Bildes von meiner Eingangspipeline habe, was wäre der beste Weg, es zu trainieren? Wie würde ich in den Grundlagen mit der Weitergabe von Daten umgehen? Ich habe eine Struktur, die ich gerne benutzen würde (ich weiß, dass ich gewisse Daten von bestimmten Dingen wie Tensoren bekommen kann), aber ich bin mir nicht sicher, wie ich das machen soll.Welcher Weg zur Durchleitung von Daten?

Ich bin sehr neu dazu, so würde jede Hilfe sehr geschätzt werden.

def model(image_tensor): 
    tf.summary.image(img) 

    return predictions 

def loss(predictions, labels): 

    return some_loss 

def train(some_loss): 

    return train_op 

Antwort

0

Tensorflow kann ein wenig kompliziert für jemanden neu zu Maschine lernen und Python sein. Mein Rat ist, durch die ausgezeichneten Notebook-Tutorials zu gehen, die auf Tensorflow-Sites existieren und anfangen, die Abstraktion zu verstehen.

Aber vorher würde ich Python mit numpy (und manchmal scipy) verwenden, um grundlegende Maschinenmethoden wie Stochastic Gradient Descent zu implementieren, nur um sicherzustellen, dass Sie verstehen, wie die Algorithmen funktionieren. Dann implementieren Sie eine einfache logistische Regression.

Warum also bitte ich Sie, all das zu tun? Nun, denn sobald Sie einen guten Griff darüber haben, wie man mit dem maschinellen Lernalgorithmus arbeitet und wie langwierig es ist, die Gradienten zu finden, werden Sie verstehen, warum die Tensorflow-Abstraktion nützlich ist.

Ich werde Ihnen einige einfache Beispiele zu MNIST geben.

from sklearn.datasets import load_digits 
import tensorflow as tf 
import matplotlib.pyplot as plt 
import numpy as np 


mnist = load_digits(2) 
print("y [shape: {}] {}] : {}".format(y.shape,y[:10])) 
print("x [shape: {}] {}]".format(x.shape) 

Was ich im wesentlichen oben getan habe, ist Last zwei Ziffern aus der MNIST Datensatz (0 und 1) und zeigt die Anordnung für den Vektor Y und Matrix (x). Wenn Sie sehen wollen, wie die Bilder aussehen können Sie plt.imshow(X[0].reshape([8,8])) Der nächste Schritt ist unser Platzhalter beginnen zu definieren und Variablen

input_x = tf.placeholder(tf.float32,shape=[None,X.shape[1]], name  = "input_x") 
input_y = tf.placeholder(tf.float32,shape=[None,],name = "labels") 
weights = tf.Variable(initial_value = tf.zeros(shape=[X.shape[1],1]), name="weights") 
b = tf.Variable(initial_value=0.0, name = "bias") 

Wir hier getan haben, ist zwei Platzhalter in tensorflow definiert und haben gesagt, was die Variablen erwarten sollte als Eingabe. Ich habe dem Platzhalter auch einen Namen zum Debuggen gegeben.

prediction_y = tf.squeeze(tf.nn.sigmoid(tf.add(tf.matmul(input_x,weights),tf.cast(b,tf.float32)))) 
loss = tf.losses.log_loss(input_y,prediction_y) 
optimizer = tf.train.Adamoptimizer(0.001).minimize(loss) 

Da gehen Sie, das ist eine logistische Regression im Tensorflow. Was der letzte Block tut, ist, die Aktivierungsfunktion auf unsere Eingabevektoren anzuwenden, definiert die Verlustfunktion und definiert dann einen Optimierer für die Verlustfunktion.

Der letzte Schritt ist es zu starten.

from sklearn.metrics import roc_auc_score 
s.run(tf.global_variables_initializer()) 
for i in range(10): 
    s.run(optimizer,{input_X:X_train, input_y: y_train}) 
    loss_i = s.run(loss, {input_x:x_train,input_y:y_train}) 
    print("loss at iteration {}: {}".format(i, loss_i)) 

Das ist im Wesentlichen, wie Sie Ihre Daten durch Tensorflow ausführen. Dieser Code kann Tippfehler enthalten, ich habe kein Python auf diesem Computer, also schreibe ich basierend auf Speicher. Aber die Grundidee ist da. Hoffe das hilft.

Edit: Auch seit Sie am besten gefragt, um Bilddaten zu trainieren. Meine Antwort an Sie wäre, dass es kein "Bestes" gibt. Das Erstellen eines CNN ist ein typischer Ansatz, den Sie möglicherweise unter Verwendung einer großen Anzahl klassifizierter Bilder ausprobieren möchten. Zuvor verwendeten die Leute auch relativ gut Unterstützungsvektoren zum Klassifizieren von Bildern.

Verwandte Themen