tensorflow报错:NotImplementedError: Cannot convert a symbolic Tensor (ExpandDims:0) to a numpy array.

跑tensorflow代码的时候遇到报错:
NotImplementedError: Cannot convert a symbolic Tensor (ExpandDims:0) to a numpy array. This error may indicate that you're trying to pass a Tensor to a NumPy call, which is not supported
原代码:

from sklearn.metrics import r2_score
...
model.compile(optimizer='adam', loss='mse', metrics=r2_score)
model.fit(X_train, Y_train, epochs=50, batch_size=20, validation_data=(X_val,Y_val), verbose=1)

控制台在运行到model.fit的时候报错了,其实问题出在model.compile上:sklearn.metrics里的r2_score不能作为metrics的值。
解决方法是要么自定义一个R2函数给metrics,要么改用keras.metrics里的函数。

自定义R2函数:

from keras import backend as K

def coeff_determination(y_true, y_pred):
    SS_res = K.sum(K.square(y_true - y_pred))
    SS_tot = K.sum(K.square(y_true - K.mean(y_true)))
    return 1 - SS_res / (SS_tot + K.epsilon())

model.compile(optimizer='adam', loss='mse', metrics=[coeff_determination])

改用keras.metrics里的RMSE:

from keras import metrics
...
model.compile(optimizer='adam', loss='mse', metrics=metrics.RootMeanSquaredError())
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值