当前,我正在使用one-hot-encoded
和import keras
import numpy as np
import tensorflow as tf
# You could actually make it a lambda function as well
def weighted_crossentropy(labels, logits):
return tf.losses.softmax_cross_entropy(
labels,
logits,
weights=tf.abs(tf.argmax(logits, axis=1) - tf.argmax(labels, axis=1)),
)
model = keras.models.Sequential(
[
keras.layers.Dense(32, input_shape=(10,)),
keras.layers.Activation("relu"),
keras.layers.Dense(10),
keras.layers.Activation("relu"),
keras.layers.Dense(5),
]
)
data = np.random.random((32, 10))
labels = keras.utils.to_categorical(np.random.randint(5, size=(32, 1)))
model.compile(optimizer="rmsprop", loss=weighted_crossentropy)
model.fit(data, labels, batch_size=32)
类在自定义ActivityAction
内执行一些活动。 ActivityFunc
仅接受Activity
,ActivityAction
仅接受源自DelegateInArgument
的活动,并且仅接受一个ActivityFunc
。
我的问题是我如何以相同的方式执行不是从ActivityWithResult
派生而是具有输出参数(例如DelegateOutArgument
)的Activity
。同一问题可能适用于具有多个输出参数的任何ActivityWithResult
。
当前的解决方法是使用一个自定义类,该类将这些输出参数作为属性保存,并将其作为System.Activities.Statements.Assign
传递,但是我需要更复杂的解决方案。
一个Activity
派生的类属性:
InArgument
设计师代码:
NativeActivity
解决方法:
public ActivityFunc<string> ExampleActivityDelegate { get; set; } =
new ActivityFunc<string>() { Result = new DelegateOutArgument<string>("text") };
public ActivityAction<string> ExampleActivityDelegate { get; set; } =
new ActivityAction<string>() { Argument = new DelegateInArgument<string>("text") };
然后更改结果。在子活动中输入文字。
更新:
问题的第一部分有一个错误的陈述。 <sap:WorkflowItemPresenter Item="{Binding ModelItem.ExampleActivityDelegate.Handler, Mode=TwoWay}" AllowedItemType="a:Activity" HintText="Drop activity here"/>
属性的类型确实为class ActivityResult
{
public string Text;
}
public ActivityAction<ActivityResult> ExampleActivityDelegate { get; set; } =
new ActivityAction<ActivityResult>() { Argument = new DelegateInArgument<ActivityResult>("result") };
,它可以接受任何ActivityFunc.Handler
。
问题的第二部分,是否存在任何适用的标准机制来使用ActivityDelegate
传递多个Activity
。