2016-05-31 5 views
0

딥 학습 알고리즘 코드를 작성했습니다. 그러나 나는 데이터를로드하는 마지막 단계에 막혔다.TensorType (float32, matrix)을 TensorType (int32, matrix)으로 변환 할 때 오류가 발생했습니다.

self.x = T.imatrix("x") 
self.y = T.ivector("y") 

데이터를 고정하는 변수로 정의된다

그때 수행

train_x, train_y, train_lengths = dataUtils.read_and_sort_matlab_data(path+"train.txt",path+"train_lbl.txt") 
validate_x, validate_y, validate_lengths = dataUtils.read_and_sort_matlab_data(path+"valid.txt",path+"valid_lbl.txt") 
tested_x, tested_y, tested_lengths = dataUtils.read_and_sort_matlab_data(path+"test.txt",path+"test_lbl.txt") 
여기

제가 train_y 형상으로 형 numpy.ndarray이다 변수의 타입을 확인했다 (2000 ,) 이고 train_y [0]의 유형이 'int32'입니다.

def shared(data_x,data_y): 

    shared_x = theano.shared(np.asarray(data_x, dtype=theano.config.floatX), borrow=True) 
    shared_y = theano.shared(np.asarray(data_y, dtype=theano.config.floatX), borrow=True) 
    return shared_x, T.cast(shared_y, "int32") 

난 다음 코드

train_mb = theano.function(
      [i], cost, updates=updates, 
      givens={ 
       self.x: 
       training_x[i*self.document_length: (i+1)*self.document_length], 
       self.y: 
       training_y[i: (i+1)] 
      }) 

에서 에러가 다음과 같이

다음 I 공유 기능이 정의 theano 공유 변수

training_x,training_y = shared(train_x,train_y) 
validation_x,validation_y = shared(validate_x,validate_y) 
test_x,test_y = shared(tested_x,tested_y) 

에 데이터를 넣을 줄에

training_y[i: (i+1)] 

그리고 오류가

형식 오류입니다 : 유형 TensorType에 (INT32, 매트릭스) 형식 TensorType (float32, 매트릭스) (0. 변수 Subtensor의 {: INT64 INT64을})로 변환 할 수 없습니다. Subtensor {int64 : int64 :} .0을 수동으로 TensorType (int32, matrix)으로 변환 할 수 있습니다.

shared_y 변수를 이미 캐스팅 한 경우 float32가 도입되는 위치를 알 수 있습니까? 그리고이 오류를 수정하는 방법. 또한 왜 train_y가 제안 된 벡터 인 경우 error 문에 행렬이 있습니까?

답변

0

답변을 찾았습니다. 실제로 training_x 비트가 아니며 오류가 아닌 training_y 비트입니다.

관련 문제