2017-12-12 5 views
0

私はTensorflowで作業していますが、私はPythonと機械学習の面白いです。私が入力パイプラインからテンソルのイメージを持っていれば、それを訓練する最良の方法は何でしょうか?基本と同様に、トラフデータの受け渡しをどうすればできますか?私は(私はテンソルのような特定のものから特定のデータを得ることができることを知っている)使用したい構造を持っていますが、私はそうする方法がわかりません。トラフデータをどのように渡すのですか?

私は非常にこれですべてのヘルプは非常に高く評価されるように新しいです。

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

    return predictions 

def loss(predictions, labels): 

    return some_loss 

def train(some_loss): 

    return train_op 

答えて

0

Tensorflowは機械学習とPythonの新しい人にとっては少し複雑かもしれません。私のアドバイスは、テンソルフローサイトに存在する優れたノートブックのチュートリアルを見て、抽象を理解し始めることです。

しかし、その前に、アルゴリズムの仕組みを理解できるように、Stochastic Gradient Descentのような基本的なマシンメソッドを実装するためにnumpy(と時にはscipy)を使ってPythonを使用します。その後、簡単なロジスティック回帰を実装します。

なぜ私はあなたにすべてのことを依頼しますか?なぜなら、機械学習アルゴリズムをどのように扱うか、グラデーションを見つけるのがいかに面倒なのかを把握したら、なぜテンソルフロー抽象化が有用なのか理解できるからです。

私は、MNISTを扱う簡単な例を提供します。私は本質的に上記やった

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) 

は、負荷であるベクトルyとマトリックス用MNISTデータセット(0と1)、表示アレイから二桁(X)。 あなたはイメージがどのように見えるか確認したい場合はすることができますplt.imshow(X[0].reshape([8,8]))次のステップは、私たちのプレースホルダや変数の定義を開始することです

我々がここで行っているtensorflowで2つのプレースホルダを定義し、変数が期待するべきである何を言った
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") 

入力として。また、プレースホルダにデバッグ目的の名前を付けました。

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) 

これはテンソルフローのロジスティック回帰です。最後のブロックが行うことは、入力ベクトルにアクティベーション関数を適用し、損失関数を定義してから、損失関数のオプティマイザを定義することです。

最終ステップはそれを実行することです。

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)) 

これは基本的にテンソルフローを使ってデータを実行する方法です。このコードは、私はメモリに基づいて書いているので、私はこのマシン上のpythonを持っていないタイプミスを持つ可能性があります。しかし基本的な考え方はそこにあります。お役に立てれば。

編集:画像データを訓練するための最良の方法を尋ねたので、私の答えは "最高"ではないでしょう。 CNNを構築することは、あなたが多数の分類された画像を持っていると仮定して実験したい典型的なアプローチです。それ以前は、画像を分類するためにサポートベクターを比較的よく使用していました。

関連する問題