【发布时间】:2019-04-30 02:29:32
【问题描述】:
我有一个数据集,每个案例包含 1 个 y_true 值。我想构建一个DNN,它输出3个系数,稍后将用于创建y_pred
y_pred = 4*coeff_1 + 5*coeff_2 + 6 *coeff_3
我正在使用keras,当我尝试定义这样的自定义函数时
from keras.callbacks import ModelCheckpoint
from keras.layers import advanced_activations
from keras.models import Sequential
from keras.layers import Dense, Activation, Flatten
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error
import keras.backend as K
def custom_objective(layer):
return K.sum(layer.output)
NN_model = Sequential()
# The Input Layer :
NN_model.add(Dense(X_train.shape[1], kernel_initializer='normal',input_dim = X_train.shape[1], activation='relu'))
# The Hidden Layers :
NN_model.add(Dense(20, kernel_initializer='normal',activation='elu'))
NN_model.add(Dense(20, kernel_initializer='normal',activation='elu'))
output_layer = Dense(1, kernel_initializer='normal',activation='linear')
# The Output Layer :
NN_model.add(output_layer)
# Compile the network :
NN_model.compile(loss=custom_objective(output_layer), optimizer='Adamax', metrics=['mean_absolute_error'])
NN_model.summary()
NN_model.fit(X_train, y_train, epochs=10,verbose = 1)
print('NN train = ', mean_absolute_error(y_train , NN_model.predict(X_train)))
predictions = NN_model.predict(X_test)
MAE = mean_absolute_error(y_test , predictions)
print('NN MAE = ', MAE)
我都明白了
TypeError:不允许将
tf.Tensor用作Pythonbool。利用if t is not None:而不是if t:来测试是否定义了张量, 并使用 tf.cond 等 TensorFlow 操作来执行子图 以张量的值为条件。
所以我的问题是
我如何定义一个DNN,每个数据需要1个y_true,输出3个值,它将线性组合成一个y_pred,用于获取损失函数和训练网络
感谢您的宝贵时间
【问题讨论】:
-
你的 y_train 形状是什么?
-
4071 x 1 as In 1 每个训练示例的值
-
您是否有理由不希望您的网络预测这一点?
-
是的,说来话长,但可以说,这三个值是由三个指示性分析模型计算得出的,只有这些模型的组合就足够了
标签: python-3.x keras