繁体   English   中英

R_squared 与 epochs

[英]R_squared vs epochs

早上好,我是一名 Python 初学者,我正在尝试构建我的第一个神经网络。 有没有办法绘制 R2 进化与时代的关系? 我通过以下方式评估 R2: r2_score(y_test_pred, y_test) 我以这种方式构建了一个完全连接的神经网络:

optimizer = tf.keras.optimizers.Adam(lr=0.001)
model = Sequential()

# ,kernel_regularizer=l2(c), bias_regularizer=l2(c)
model.add(Dense(100, input_shape = (X_train.shape[1],), activation = 'relu',kernel_initializer='glorot_uniform'))
model.add(Dropout(0.2))
model.add(Dense(100, activation = 'relu',kernel_initializer='glorot_uniform'))
model.add(Dropout(0.2))
model.add(Dense(100, activation = 'relu',kernel_initializer='glorot_uniform'))

model.add(Dense(1,activation = 'linear',kernel_initializer='glorot_uniform'))

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

history = model.fit(X_train, y_train, epochs = 100,
                    validation_split = 0.1, shuffle=False, batch_size=250
                    )

history_dict = history.history
`

数据集由 18 个特征和 1 个标签组成,是一个回归任务。

你只需要在你的compile行中添加它。

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

如果你想这样做,你需要创建一个 keras 可以理解的指标,

import tf.keras.backend as K

def r2_score(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()) )

代码取自kaggle

抱歉我忘了添加 Tensorboard 部分。

如果您想在训练期间查看损失/指标的演变,您可以使用 Tensorboard,如文档中所示

logdir = "logs/" + datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=logdir)


history = model.fit(X_train, y_train, epochs = 100,
                    validation_split = 0.1, shuffle=False, batch_size=250, calllbacks=[tensorboard_callback])

然后在终端中使用此行访问 Tensorboard

tensorboard --logdir logs

然后,您可以通过访问localhost:6006在浏览器上访问 tensorboard

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM