当您希望跨线程发送一系列内容(以线程阻塞方式)时,您可以使用例如crossbeam_channel
. 当您希望通过 future 发送一系列事物时(以非线程阻塞、future 阻塞的方式),您可以使用例如tokio::sync::mpsc
.
什么东西可以让我从阻塞线程发送并从异步上下文接收?(顺便说一句,我可以想象在某些时候需要相反的情况。)
我需要有界通道,发送时线程阻塞,接收时未来阻塞。
我正在寻找一些有点性能的东西,就像在 中所做的等效操作crossbeam_channel
,但唤醒未来而不是线程,能够缓冲一些消息以尽可能避免阻塞。这里针对多消息场景给出的答案看起来有点像这方面的补丁。
我试图从去SKLearn到Keras才能做出具体改进,我的模型.但是,我无法获得与SKLearn模型相同的性能:
mlp = MLPClassifier(
solver='adam', activation='relu',
beta_1=0.9, beta_2=0.999, learning_rate='constant',
alpha=0, hidden_layer_sizes=(238,),
max_iter=300
)
dev_score(mlp)
Run Code Online (Sandbox Code Playgroud)
每次给出~0.65分
这是我相应的Keras代码:
def build_model(alpha):
level_moreargs = {'kernel_regularizer':l2(alpha), 'kernel_initializer': 'glorot_uniform'}
model = Sequential()
model.add(Dense(units=238, input_dim=X.shape[1], **level_moreargs))
model.add(Activation('relu'))
model.add(Dense(units=class_names.shape[0], **level_moreargs)) # output
model.add(Activation('softmax'))
model.compile(loss=keras.losses.categorical_crossentropy, # like sklearn
optimizer=keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0),
metrics=['accuracy'])
return model
k_dnn = KerasClassifier(build_fn=build_model, epochs=300, batch_size=200, validation_data=None, shuffle=True, alpha=0.5, verbose=0)
dev_score(k_dnn)
Run Code Online (Sandbox Code Playgroud)
从查看文档(并深入研究SKLearn代码),这应该完全符合相同的事情.
但是,当我运行这个模型时,我得到了~0.5的准确度,这非常糟糕.
如果我将alpha设置为0,则SKLearn的得分几乎没有变化(0.63),而Keras则从0.2变为0.4.
这些型号有什么区别?为什么Keras虽然应该比SKLearn更好,但到目前为止表现优于目前?我的错是什么?
谢谢,