我正在学习深度学习。我正在python 3.6中使用keras进行深度学习。对于我的深度学习任务,我有136个输入变量。我已经编写了一个自定义损失函数。下面是损失函数的代码
import keras.backend as K
def rmsle(y, y0):
return K.sqrt(K.mean(K.pow(K.log(y)-K.log(y0), 2)))
这是我用于深度学习的代码
model=keras.models.Sequential()
model.add(Dropout(0.2, input_shape=(136,)))
model.add(keras.layers.Dense(20,kernel_initializer='normal',activation='relu',kernel_constraint=maxnorm(3)))
model.add(keras.layers.Dense(45,kernel_initializer='normal',activation='relu',kernel_constraint=maxnorm(3)))
model.add(keras.layers.Dense(20,kernel_initializer='normal',activation='relu',kernel_constraint=maxnorm(3)))
model.add(keras.layers.Dense(1,kernel_initializer='normal',activation='tanh',kernel_constraint=maxnorm(3)))
model.compile(loss=rmsle,optimizer='adam')
model.fit(input,outpu,epochs=100,shuffle=True,verbose=2)
我收到错误消息为
ValueError: Error when checking input: expected dropout_5_input to have 2 dimensions, but got array with shape ()
您能帮我解决这个问题吗?
std_df是我从中获取输入和输出的数据框。我做了下面的检查,看是否有空行
np.where(std_df.applymap(lambda x: x == ''))
(array([], dtype=int64), array([], dtype=int64))