我是Keras的新手,我試圖定義我自己的指標。它計算一致性指數,這是衡量回歸問題的指標。Keras自定義指標迭代
def cindex_score(y_true, y_pred):
sum = 0
pair = 0
for i in range(1, len(y_true)):
for j in range(0, i):
if i is not j:
if(y_true[i] > y_true[j]):
pair +=1
sum += 1* (y_pred[i] > y_pred[j]) + 0.5 * (y_pred[i] == y_pred[j])
if pair is not 0:
return sum/pair
else:
return 0
def baseline_model(hidden_neurons, inputdim):
model = Sequential()
model.add(Dense(hidden_neurons, input_dim=inputdim, init='normal', activation='relu'))
model.add(Dense(hidden_neurons, init='normal', activation='relu'))
model.add(Dense(1, init='normal')) #output layer
model.compile(loss='mean_squared_error', optimizer='adam', metrics=[cindex_score])
return model
def run_model(P_train, Y_train, P_test, model):
history = model.fit(numpy.array(P_train), numpy.array(Y_train), batch_size=50, nb_epoch=200)
plotLoss(history)
return model.predict(P_test)
baseline_model,run_model和cindex_score功能在one.py和下面的函數是在two.py,我叫模型,
def experiment():
hidden_neurons = 250
dmodel=baseline_model(hidden_neurons, train_pair.shape[1])
predicted_Y = run_model(train_pair,train_Y, test_pair, dmodel)
,但我得到了下面的錯誤,「對象類型'Tensor'沒有len()「。它也不適用於shape屬性。例如,y_true表示爲Tensor(「dense_4_target:0」,shape =(?,?),dtype = float32),其形狀爲Tensor(「strided_slice:0」,shape =(),dtype = INT32)。
請問如何在Tensor對象內迭代?
最佳,
你爲什麼選中「如果我不是J」 ......是不是真的所有的時間? – Pedia