2017-11-29 22 views
1

これは私の実際のカスタム関数であるKeras Cross_entropy

私はkerasで働いていると私はkeras抽象バックエンドを使用してcategorical_crossentropyを書き換えしようとしているが、私はこだわっている、私はcrossentropyのちょうど加重和をしたいです

私のプログラムでは、model.predict()のおかげでlabel_predが生成されます。 は最終的に私が行います

label_pred = model.predict(mfsc_train[:,:,5]) 
    cc = custom_entropy(label, label_pred) 
    ce = K.categorical_crossentropy(label, label_pred) 

私は次のエラーを取得:documentationに与えられたよう

Traceback (most recent call last): 
    File "SAMME_train_all.py", line 47, in <module> 
    ce = K.categorical_crossentropy(label, label_pred) 
    File "C:\Users\gionata\AppData\Local\Programs\Python\Python36\lib 
s\keras\backend\tensorflow_backend.py", line 2754, in categorical_c 
    axis=len(output.get_shape()) - 1, 
AttributeError: 'numpy.ndarray' object has no attribute 'get_shape' 
+0

代わりに計算する方法を教えてください。 –

+0

私は()と(=のnp.onesをPROB)同じパラメータでそれらを呼び出し、両方をテストしようとした私のcustom_loss と以前messaggeを編集しますが、基本的なcrossentropyは私にエラーを与える:なしgetShapeを –

答えて

2

Kerasバックエンド機能は、テンソルを期待しています。

それはlabelがどのようなタイプあなたの答えから明らかではありません。しかし、model.predictは常にNumPy ndarraysを返すことがわかっているので、label_predはテンソルではありません。変換するのは簡単です(例:これのリターンが実際にそれを評価するために、テンソルであるので、

custom_entropy(label, K.constant(label_pred)) 

を(labelはすでにテンソルであると仮定すると)、あなたは同じようmodelを使用することができ、また

K.eval(custom_entropy(label, K.constant(label_pred))) 

を呼びたいですオペアンプ、および他のテンサーにおけるテンソル結果にそれを呼び出し、すなわち

label_pred = model(K.constant(mfsc_train[:,:,5])) 
cc = custom_entropy(label, label_pred) 
ce = K.categorical_crossentropy(label, label_pred) 

label_predccce意志すべてテンソルです。

1

、引数はテンソル:

y_true: True labels. TensorFlow/Theano tensor. 
y_pred: Predictions. TensorFlow/Theano tensor of the same shape as y_true. 

はそれを解決する必要がありテンソルにnumpyの配列を変換します。 K.categorical_crossentropy