小编Mik*_*ail的帖子

从.Net COM dll回拨到Delphi客户端,无需注册(并排)COM

TLDR:我正在尝试从.Net COM dll调用异步回调到Delphi客户端.exe,但这些似乎在免注册COM中无法正常工作,而同步回调确实有效,并且异步回调正在工作时不是一个免注册的COM.


我的全球案例是,我有一个外国的闭源.Net dll暴露了一些公共事件.我需要将这些事件传递给Delphi应用程序.所以我决定制作一个中间的.dll,它可以作为我的app和另一个dll之间的COM桥.当我的dll通过regasm注册时,它运行得很好,但是当我切换到免注册COM时情况变得更糟.我将我的情况缩短为可重复的小例子,它不依赖于其他dll,所以我将在下面发布它.

基于这个答案我创建了一个公共接口ICallbackHandler,我希望从Delphi客户端应用程序获得:

namespace ComDllNet
{
    [ComVisible(true)]
    [Guid("B6597243-2CC4-475B-BF78-427BEFE77346")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface ICallbackHandler
    {
        void Callback(int value);
    }

    [ComVisible(true)]
    [Guid("E218BA19-C11A-4303-9788-5A124EAAB750")]
    public interface IComServer
    {
        void SetHandler(ICallbackHandler handler);
        void SyncCall();
        void AsyncCall();
    }

    [ComVisible(true)]
    [Guid("F25C66E7-E9EF-4214-90A6-3653304606D2")]
    [ClassInterface(ClassInterfaceType.None)]
    public sealed class ComServer : IComServer
    {
        private ICallbackHandler handler;
        public void SetHandler(ICallbackHandler handler) { this.handler = handler; }

        private int GetThreadInfo()
        {
            return Thread.CurrentThread.ManagedThreadId;
        }

        public void SyncCall()
        {
            this.handler.Callback(GetThreadInfo());
        }

        public void AsyncCall()
        {
            this.handler.Callback(GetThreadInfo());
            Task.Run(() …
Run Code Online (Sandbox Code Playgroud)

.net c# delphi com registration-free-com

9
推荐指数
1
解决办法
1792
查看次数

CNTK:序列到序列处理的损失函数

我正在为音素对齐做一个序列到序列的模型.特别是我的火车数据看起来像配对序列(音素 - 长度),其中音素是单热矢量,长度是浮点数.所以我想用一个音素序列为模型提供信息并获得相应的长度序列.

我的网络通常是这样构建的:

model = Sequential(
    EmbeddingLayer{embeddingSize} : 
    RecurrentLSTMLayerStack {lstmDims} :
    LinearLayer{1}
)
Run Code Online (Sandbox Code Playgroud)

如果我LinearLayer{1}做对了,应该从lstmDims1 转换为1.因此,当我用长度为N的序列提供模型时,我应该得到一个长度为N的结果序列.

现在我想建立一个适当的损失函数,我认为应该是已知结果序列的元素和模型输出之间的平均差异.应该通过时间轴进行平均,以便可以管理不同长度的序列.

我打算做点什么

objectives = Input(1) #actually a sequence here as stated in the reader
result = model(features)
errs = Abs(objectives - result)
loss_function = ReduceMean(errs)
criterionNodes  = (loss_function)
Run Code Online (Sandbox Code Playgroud)

但在减少运营中,它明确指出

这些操作不支持减少序列.相反,您可以通过重复实现此目的.

我不确定如何使用复发来完成我的任务.我也不确定整个概念是否合适.

deep-learning lstm cntk

5
推荐指数
1
解决办法
825
查看次数

标签 统计

.net ×1

c# ×1

cntk ×1

com ×1

deep-learning ×1

delphi ×1

lstm ×1

registration-free-com ×1