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を構築することは、あなたが多数の分類された画像を持っていると仮定して実験したい典型的なアプローチです。それ以前は、画像を分類するためにサポートベクターを比較的よく使用していました。