Tensorflow는 기계 학습 및 Python에 익숙하지 않은 사용자에게 조금 복잡 할 수 있습니다. 나의 조언은 tensorflow 사이트에 존재하는 우수한 노트북 튜토리얼을 통해 추상화를 이해하는 것입니다.
그러나 그 전에는 알고리즘이 어떻게 작동하는지 이해할 수 있도록 Stochastic Gradient Descent와 같은 기본적인 기계 방법을 구현하기 위해 numpy (때때로 scipy)와 함께 python을 사용합니다. 그런 다음 간단한 로지스틱 회귀를 구현하십시오.
그런데 왜 모든 것을 요구합니까? 왜냐하면 기계 학습 알고리즘으로 작업하는 방법과 그라디언트를 찾는 것이 얼마나 지루한지를 파악하게되면 왜 tensorflow 추상화가 유용한 지 이해하게 될 것입니다.
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 두 자리를 정의하고 변수를 기대한다 무엇을 말한
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))
이것이 바로 tensorflow를 통해 데이터를 실행하는 방법입니다. 이 코드는 오타가있을 수 있습니다.이 컴퓨터에는 파이썬이 없으므로 메모리를 기반으로 작성합니다. 그러나 기본적인 아이디어가 있습니다. 희망이 도움이됩니다.
편집 : 이미지 데이터를 학습하는 가장 좋은 방법을 물었습니다. 내 대답은 "최고"가 아닐 것이다. CNN을 만드는 것은 많은 수의 분류 된 이미지가 있다고 가정하고 실험하는 것이 일반적 일 것입니다. 그 전에 사람들은 이미지를 분류하는 데 상대적으로 잘 지원 벡터를 사용했습니다.