Bir diziyi sınıflandırmak için CNTK (Python kullanarak) içinde bir LSTM uygulamaya çalışıyorum.CNTK LSTM'de Dinamik Eksen hakkında şikayet
giriş: Etiketler bir sıcak değerleri vektörlerdir
sayı
Özellikler sabit uzunlukta sekanslar (bir zaman serisi)
Ağı:
input = input_variable(input_dim)
label = input_variable(num_output_classes)
h = Recurrence(LSTM(lstm_dim)) (input)
final_output = C.sequence.last(h)
z = Dense(num_output_classes) (final_output)
loss = C.cross_entropy_with_softmax(z, label)
Çıktı: dizisi bir etiket eşleştiğini bir olasılık
Tüm boyutları sabittir, bu yüzden ben herhangi bir dinamik eksenini ihtiyaç ve herhangi belirtilmemiş sanmıyorum.
Ancak CNTK mutlu değildir ve ben alıyorum:
return cross_entropy_with_softmax(output_vector, target_vector, axis, name)
RuntimeError: Currently if an operand of a elementwise operation has any dynamic axes, those must match the dynamic axes of the other operands
ise (örneklerden bazıları uyarınca) Ben
label = input_variable(num_output_classes, dynamic_axes=[C.Axis.default_batch_axis()])
Artık bu şikayet dinamik bir ekseni ile etiket tanımlamak ve daha da alır:
tf = np.split(training_features,num_minibatches)
tl = np.split(training_labels, num_minibatches)
for i in range(num_minibatches*num_passes): # multiply by the
features = np.ascontiguousarray(tf[i%num_minibatches])
labels = np.ascontiguousarray(tl[i%num_minibatches])
# Specify the mapping of input variables in the model to actual minibatch data to be trained with
trainer.train_minibatch({input : features, label : labels})
Ama bu hata ile ölür:
File "C:\Users\Dev\Anaconda3\envs\cntk-py34\lib\site-packages\cntk\cntk_py.py", line 1745, in train_minibatch
return _cntk_py.Trainer_train_minibatch(self, *args)
RuntimeError: Node '__v2libuid__Plus561__v2libname__Plus552' (Plus operation): DataFor: FrameRange's dynamic axis is inconsistent with matrix: {numTimeSteps:1, numParallelSequences:100, sequences:[{seqId:0, s:0, begin:0, end:1}, {seqId:1, s:1, begin:0, end:1}, {seqId:2, s:2, begin:0, end:1}, {seqId:3, s:3, begin:0, end:1}, {seq...
Bunu düzeltmek için ne yapmam gerekiyor?
Denedim, hala yaklaşık – Tiny
RuntimeError hakkında şikayet: Şu anda, bir elementel işlemin bir işleneni herhangi bir dinamik eksenine sahipse, bunlar diğer işlenenlerin dinamik eksenleriyle eşleşmelidir – Tiny
Yanıtı gerçekten denedikten sonra güncelledim. –