python - 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,如doc
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
然后,您可以通过以下方式访问浏览器上的 tensorboardlocalhost:6006
推荐阅读
- hdfs - 使用 nohup 后停止 HDFS Balancer
- mysql - 如何在 SQL 中的特定列中获取中间值
- flutter - Flutter:我的 DropdownButton 值没有被占用?
- visual-studio - 如何在从 Visual Studio 发布到 azure 期间防止 web.config 恢复
- node.js - 我尽一切努力使这个模板工作,但仍然出现这个错误:只有命名块和混合可以出现在扩展模板的顶层
- c# - 如何在列表视图中显示/隐藏按钮
- mysql - 在 MySQL 中提取 10k 表的特定列的计数
- ios - 如何判断iPhone是iPhoneX系列?
- javascript - 如何在滚动上修复 jQuery 图像序列
- android - 安卓。SSLHandshakeException 连接由 AsyncHttpClient 或 Retrofit 中的对等方重置