我是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