我正在使用神经网络进行回归。对于 NN 来说,这应该是一项简单的任务,我有 10 个特征和 1 个要预测的输出。我正在为我的项目使用 pytorch,但我的模型学习不好。损失从一个非常高的值(40000)开始,然后在前 5-10 个时期之后损失迅速减少到 6000-7000,然后它卡在那里,无论我做什么。我什至尝试更改为 skorch 而不是 pytorch,以便我可以使用交叉验证功能,但这也无济于事。我尝试了不同的优化器并向网络添加了层和神经元,但这没有帮助,它停留在 6000,这是一个非常高的损失值。我在这里做回归,我有 10 个特征,我试图预测一个连续值。这应该很容易做到,这就是为什么它让我更加困惑。
这是我的网络:我在这里尝试了从制作更复杂的架构(例如添加层和单元到批量标准化、更改激活等)的所有可能性。没有任何效果
class BearingNetwork(nn.Module):
def __init__(self, n_features=X.shape[1], n_out=1):
super().__init__()
self.model = nn.Sequential(
nn.Linear(n_features, 512),
nn.BatchNorm1d(512),
nn.LeakyReLU(),
nn.Linear(512, 64),
nn.BatchNorm1d(64),
nn.LeakyReLU(),
nn.Linear(64, n_out),
# nn.LeakyReLU(),
# nn.Linear(256, 128),
# nn.LeakyReLU(),
# nn.Linear(128, 64),
# nn.LeakyReLU(),
# nn.Linear(64, n_out)
)
def forward(self, x):
out = self.model(x)
return out
Run Code Online (Sandbox Code Playgroud)
这是我的设置:使用 skorch 比使用 pytorch 更容易。在这里,我还监控 R2 指标,并将 RMSE 作为自定义指标来监控我的模型的性能。我也为 Adam 尝试了 amsgrad,但这没有帮助。
R2 = EpochScoring(r2_score, lower_is_better=False, name='R2')
explained_var_score …
Run Code Online (Sandbox Code Playgroud) 我正在使用 Rabbitmq 进行一个项目,我正在使用 RPC 模式,基本上我正在接收或使用来自队列的消息,进行一些处理,然后发送回响应。我使用 Pika,我的目标是为每个任务使用一个线程,因此对于每个任务,我将专门为该任务创建一个线程。我还读到,最佳实践是只建立一个连接,并根据需要在其下建立多个通道,但我总是收到此错误:
“可能无法从 pika.exceptions.RecursionError 的范围内调用 start_sumption”:start_sumption 可能不会从另一个 BlockingConnection 或 BlockingChannel 回调的范围内调用。
我做了一些研究,发现 Pika 不是线程安全的,我们应该为每个线程使用一个独立的连接和一个通道。但我不想这样做,因为它被认为是不好的做法。所以我想在这里问一下是否有人已经实现了这项工作。我还读到,如果我不使用 BlockingConnection 来实例化我的 Connection 并且有一个名为 add_callback_threadsafe 的函数可以使这成为可能。但不幸的是没有示例,我阅读了文档,但它很复杂,如果没有示例,我很难理解他们想要描述的内容。
我的尝试是声明两个类。每个类将代表一个任务执行器,它接收或使用来自队列的消息,并基于此进行一些处理并返回响应。我的想法是在两个任务之间共享一个rabbitmq 连接,但每个任务都会获得一个独立的通道。在上面的代码中,传递给函数的 rabbit 参数是一个类,其中包含一些变量,如 Connection 和其他函数,如 EventSubscriber,当调用它时,它将分配一个新通道并开始使用来自该特定交换和路由密钥的消息。接下来我声明一个线程并将订阅或消费函数作为该线程的目标。另一个任务类看起来也和这个类一样,这就是为什么我只上传这个代码。
On_Deregistration 类:
def __init__(self, rabbit):
self.event(rabbit) # this will call event function and pass the connection shared between all Tasks. rabbit parameter hold a connection to rabbitmq
def event(self, rabbit):
self.Subscriber = rabbit.EventSubscriber(rabbit, 'testing.test', 'test', False, onDeregistrationFromHRS # this func is task listener)
def subscribeAsync(self):
self.Subscriber.subscribe() # here i …
Run Code Online (Sandbox Code Playgroud)