2017-12-12 7 views
0

저는 Tensorflow와 함께 일하고 있습니다. 그러나 저는 Python과 기계 학습을 처음 접했습니다. 입력 파이프 라인에서 이미지의 텐서 (tensor)가 있다면, 그것을 훈련시키는 가장 좋은 방법은 무엇입니까? 기본과 마찬가지로 통과 물 데이터를 처리하는 방법은 무엇입니까? 나는 구조체를 사용하고 싶습니다. (나는 tensor와 같은 어떤 것들로부터 특정 데이터를 얻을 수 있음을 알고 있습니다.)하지만 그렇게하는 방법을 모르겠습니다.물마루 데이터를 전달하는 방법은 무엇입니까?

저는이 모든 것에 매우 도움을 줄 수있어서 매우 신났습니다.

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에 익숙하지 않은 사용자에게 조금 복잡 할 수 있습니다. 나의 조언은 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을 만드는 것은 많은 수의 분류 된 이미지가 있다고 가정하고 실험하는 것이 일반적 일 것입니다. 그 전에 사람들은 이미지를 분류하는 데 상대적으로 잘 지원 벡터를 사용했습니다.

관련 문제