GVKun编程网logo

conversion function——转换函数(转换函数使用)

4

本文将为您提供关于conversionfunction——转换函数的详细介绍,我们还将为您解释转换函数使用的相关知识,同时,我们还将为您提供关于ADiversity-PromotingObjectiv

本文将为您提供关于conversion function——转换函数的详细介绍,我们还将为您解释转换函数使用的相关知识,同时,我们还将为您提供关于A Diversity-Promoting Objective Function for Neural Conversation Models论文阅读、Cast/Convert Function in Access、CKEditor 5 v33.0.0 发布,改进 conversion/reconversion 系统、connection .server version引发了system.invalidOperationExcep的实用信息。

本文目录一览:

conversion function——转换函数(转换函数使用)

conversion function——转换函数(转换函数使用)

类型转换函数 与 explicit关键字

1.类型转换函数

C++中,可以使用构造函数将一个指定类型的数据转换为类的对象,也可以使用类型转换函数 (type conversion function)将一个类对象转换为其他类型的数据。例:

分数(Fraction)类

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 class Fraction
 6 {
 7 public:
 8     Fraction(int num,int den = 1) :m_numberator(num),m_denominator(den) {}
 9 
10     operator double() const //转换函数
11     {
12         return (double)m_numberator / m_denominator;
13     }
14 
15 private:
16     int m_numberator;  //分子
17     int m_denominator; //分母
18 };
19 
20 int main()
21 {
22     Fraction f(3,4);
23     double d = 3 + f;   //调用 opertor double() 将f转化为double
24     cout << d << endl;
25     return 0;
26 }

f是一个Fraction类型的变量,因此不能直接与3相加,于是编译器会到分数类中寻找,找到了operator double函数,该函数可以将类型对象转换为一个浮点类型的变量。因此该函数就是我们所说的类型转换函数(type conversion function)。

转换函数的一般形式:

1 operator 类型名称() const
2 {
3         // 实现转换      
4 }
  1. 必须是类的成员函数
  2. 无返回类型
  3. 形参列表为空
  4. 最好为const

2.explicit关键字

也可以通过重载+double类型转换为Fraction类类型。因此该类的代码如下:

 1 #include <iostream>
 2 
 3 class Fraction
 4 {
 5 public:
 6     Fraction(int num,int den = 1) : m_numberator(num),m_denominator(den) {}
 7 
 8     Fraction operator+(const Fraction &f)
 9     {
10         return Fraction(this->m_numberator + f.m_numberator,this->m_denominator + f.m_denominator);
11     }
12 
13 private:
14     int m_numberator;  //分子
15     int m_denominator; //分母
16 };
17 
18 int main()
19 {
20     Fraction f(3,4);
21     Fraction d = f + 4; //调用 non-explicit-one-argument ctor 将4转化为Fraction
22     return 0;
23 }

但是如果同时存在类型转换函数,就存在了二义性。例:

 1 #include <iostream>
 2 
 3 class Fraction
 4 {
 5 public:
 6     Fraction(int num,m_denominator(den) {}
 7     
 8     operator double() const
 9     {
10         return (double)m_numberator / m_denominator;
11     }
12 
13     Fraction operator+(const Fraction &f)
14     {
15         return Fraction(this->m_numberator + f.m_numberator,this->m_denominator + f.m_denominator);
16     }
17 
18 private:
19     int m_numberator;  //分子
20     int m_denominator; //分母
21 };
22 
23 int main()
24 {
25     Fraction f(3,4);
26     double d = f + 4; //二义性
27     return 0;
28 }
  • f对象可以通过类型转换函数将类类型转换为double类型,然后加上4赋值给d
  • 4也可以通过构造函数转换为Fraction类型,然后两个类类型相加,又可以通过类型转换函数转换为double类型

解决的办法就是,使用explicit关键字的限制,使用方法也有两种:

  • 直接在构造函数前加上explicit关键字,防止double类型的变量隐式的转换为类类型。
  • 在转换构造函数operator double前加上explicit关键字,表示只有显示的将类类型转换为double类型时才调用该函数,例如:double d = static_cast<double>(f) + 4。

A Diversity-Promoting Objective Function for Neural Conversation Models论文阅读

A Diversity-Promoting Objective Function for Neural Conversation Models论文阅读

本文来自李纪为博士的论文 A Diversity-Promoting Objective Function for Neural Conversation Models

 

1,概述

  对于seq2seq模型类的对话系统,无论输入是什么,都倾向于生成安全,通用的回复(例如 i don''t know 这一类的回复),因为这种响应更符合语法规则,在训练集中出现频率也较高,最终生成的概率也最大,而有意义的响应生成概率往往比他们小。如下表所示:

  

  上面的表中是seq2seq对话系统产生的结果,分数最高的回复通常是最常见的句子,当然更有意义的回复也会出现在N-best列表(beam search的结果)中,但一般分数相对更低一点。主要是一般seq2seq模型中的目标函数通常是最大似然函数,最大似然函数更倾向于训练集中频率更高的回复。

  本论文提出使用MMI(最大互信息)来替换最大似然函数作为新的目标函数,目的是使用互信息减小“I don’t Know”这类无聊响应的生成概率。

2 MMI 模型 

  在原始的seq2seq模型中,使用的目标函数是最大似然函数,就是在给定输入S的情况下生成T的概率,其表达式如下:

  

  从这个表达式可以看到,实际上就是给定了源句子的情况下,选择概率最大的句子最为目标句子,这种情况下就会倾向于训练集中出现频率大的句子。

  因此引入互信息作为新的目标函数,互信息的定义:度量两个时间集合之间的相关性。其表达式如下:

  

  将上面的表达式可以改写成:

  

  我们在上面的式子的基础上对第二项加上一个$\lambda$参数,表达式改写成:

  

  这就是本论文中提出的第一个目标函数MMI-antiLM,在其基础上添加了目标序列本身的概率$logp(T)$,$p(T)$就是一句话存在的概率,也就是一个模型,前面的$\lambda$是惩罚因子,越大说明对语言模型惩罚力度越大。由于这里用的是减号,所以相当于在原本的目标上减去语言模型的概率,也就降低了“I don’t know”这类高频句子的出现概率。

       然后还提出了第二个目标函数MMI-bidi,在原始目标函数基础上添加$logp(S|T)$,也就是$T$的基础上产生$S$的概率,其具体表达式如下:

  

  而且可以通过改变$\lambda$的大小衡量二者的重要性,其表达式变为:

  

  $logp(S|T)$可以表示在响应输入模型时产生输入的概率,自然像“I don’t know”这种答案的概率会比较低,而这里使用的是相加,所以会降低这种相应的概率。

  接下来我们来详细的看看这两个目标函数

   1)MMI-antiLM

  如上所说,MMI-antiLM模型使用第一个目标函数,引入了$logp(T)$,但该方法同时也存在一个问题:模型倾向于生成生成不符合语言模型的相应。按理说$\lambda$取值小于1的时候,不应该出现这样的问题,所以在实际使用过程中需要对其进行修正。由于解码过程中往往第一个单词或者前面几个单词是根据encode向量选择的,后面的单词更倾向于根据前面decode的单词和语言模型选择,而encode的信息影响较小。也就是说我们只需要对前面几个单词进行惩罚,后面的单词直接根据语言模型选择即可,这样就不会使整个句子不符合语言模型了。使用下式中的$U(T)$代替$p(T)$,式中$g(k)$表示要惩罚的句子长度,其中$p(T)$如下

  

  $U(T)$的表达式如下:

  

  引入一个$\gamma$参数来对序列进行截断,是的$g(k)$的表达式如下:

  

  而最终的目标函数如下:

  

  此外,此外实际使用中还加入了响应句子的长度这个因素,也作为模型相应的依据,所以将上面的目标函数修正为下式:

  

  2)MMI-bidi
  MMI-bidi模型也面临一个问题就是$(1-{\lambda})logp(T|S) + {\lambda}logp(S|T)$是一个很难求解的问题。要求得$p(S|T)$项,这就需要先计算出完整的$T$序列再将其传入一个提前训练好的反向seq2seq模型中计算该项的值。但是考虑到$S$序列会产生无数个可能的$T$序列,我们不可能将每一个$T$都进行计算,所以这里引入beam-search只计算前200个序列$T$来代替。然后使用式子的第二项对N-best列表重新排序,因为由标准seq2seq模型生成的N-best列表中的候选语句通常是语法正确的,所以从这N个解中最终选择的回复通常也是语法正确的。

  然而,重排序有一个明显的缺陷就是,由于优先强调标准seq2seq的目标函数会导致非全局最优回复的产生,而且,很大程度上依赖系统成功生成足够多样的N个最优回复,也就是要求N足够大。然而标准seq2seq模型测试(解码)过程中的beam search存在一个问题导致重排序并不可用:搜索结果中缺乏多样性。因为在搜索结果里的备选回复之间通常只是标点符号或句子形态上较小的改变,大多数词语是重叠的。所以由于N-best列表中缺乏多样性的原因,会使得重排序也没什么效果。所以为了解决这类问题,需要为重排序提供一个更加多样化的N-best列表。

  因此作者提出了一种新的beam search的方法,我们通过一张图来看这两种beam search:

  

  具体的做法就如上图所示,在beam search中是不管父节点的,而是将所有的子节点混在一起进行排序选择,而在改版的beam search中,先对同一父节点下的子节点排序,然后对排序后的子节点进行进行不同的惩罚,如图中对排前面的减1,排后面的减2,做完惩罚处理后,再将所有的子节点混合在一起进行排序选择。这样的beam search会增加N-best列表的多样性。

  另外在MMI-bidi也做了和MMI-antiLM中同样的处理,增加了回复长度的影响。

Cast/Convert Function in Access

Cast/Convert Function in Access

Cint -- cast to ineger

Clng -- long

Cdbl -- double

Csng - single

Cstr - string

Cbool - boolean

==================

val() << cast to number,but it may be a vb function.. therefore,you can use vb function such as str().. to cast variable from one datatype to another..


example:

SELECT clng(fieldName) FROM tableName

CKEditor 5 v33.0.0 发布,改进 conversion/reconversion 系统

CKEditor 5 v33.0.0 发布,改进 conversion/reconversion 系统

CKEditor 5 v33.0.0 已发布。更新内容包括:引入了改进和扩展的 conversion/reconversion 系统、修订历史功能现在与实时协作编辑兼容,并且协作功能支持在 DLL 构建中使用。另外,通用 HTML 支持功能也有所改进,还修复了几个重要的错误。

改进的 conversion/reconversion 系统

CKEditor 5 编辑引擎的底层架构包括:模型和视图。conversion/reconversion 指的是两者之间的数据转换。由于更改了一些核心机制的大型清理工作,conversion 机制刚刚获得了重大、广泛的升级。最重要的是,triggerBy选项被替换为用于无缝重新 reconversion 的新 API,引入了新的向下转换助手,并对 conversion API 应用了一些更改。

支持<style>标签

通用 HTML 支持 (GHS) 功能是一个特殊插件,支持将现有的专用 CKEditor 5 插件不支持的 HTML 元素引入到内容中。这些内容包括标签<span><iframe><cite>或标签属性,如id或类。CKEditor v33.0.0 版本扩展了 GHS 可用<style>标签支持的元素池。它用于提供指定元素的 CSS 信息。

详情查看发布公告。

connection .server version引发了system.invalidOperationExcep

connection .server version引发了system.invalidOperationExcep

这个问题查找了一整天,在这个博客上找到了答案。错误不再报了,但是仍在调试中。。。 先贴solution。 -------------------------------------------------------------------------------------------------- 问题在于:State Closed System.Data.Connectio

这个问题查找了一整天,在这个博客上找到了答案。错误不再报了,但是仍在调试中。。。

先贴solution。

--------------------------------------------------------------------------------------------------

问题在于:State Closed System.Data.ConnectionState
连接没有open().

在try中加入
if (oleDbConnection1.State != ConnectionState.Open)
    oleDbConnection1.Open();

加上
finally
{
    if (oleDbConnection1.State != ConnectionState.Close)
    {
        oleDbConnection1.Close();
    }
}

”----引自

---------------------------------------------------------------------------------------------------------------------------

做了一些小的改动,因为是在cs文件中调用自己写的一个ExecuteReader方法,因此最后的sql连接不能关闭。

贴这个方法的代码。

======================================================================

public bool ExecuteReader(string queryString,string procName,out SqlDataReader myReader)

{

...

SqlConnection connection=new SqlConnection(connectionString);

try

{

if(connection.state!=connectionstate.open)

connection.open();

sqlcommand cmd=new sqlcommand(procName,connecetion);

cmd.commandType=commandType.StoredProcedure;

//添加存储过程参数。。。

myReader=cmd.ExcuteReader();

}

catch(exception e)

{throw e;}

return true;

}

=============================================================

另。数据库的连接可以用下面这种:

using (sqlconnection conn=new sqlconnection (connectionstring))

{

using(sqlcommand cmd =new sqlcommand(procName,conn))

...

}

但是这里不能用。因为这种方法的连接在using结束之后自动断开,当主程序访问类中的这段方法时会报错

:“连接关闭”什么的。

using方法在其他地方还是不错的。自动断开,多好~嘿嘿

**********************************************************************

相关问题

因为这个错误,查了一下web.config里面connectionstring的问题。

以下转自。

web.config connectionStrings 数据库连接字符串的解释(转载)

先来看一下默认的连接SQL Server数据库配置

  

SqlConnectionStringBuilder实例化时需要使用connectionString。如:SqlConnectionStringBuild builder = new SqlConnectionStringBuild(connectionString);


一、Data Source
SqlConnectionStringBuilder的DataSource属性,对应 connectionString中的Data Source,“Data Source”可以由下列字符串代替:“Server”,“Address”,“Addr”和“Network Address”。
Data Source=.\SQLExpress也可以写成这样Data Source=(local)\SQLExpress。

二、Integrated Security
SqlConnectionStringBuilder 的 IntegratedSecurity 属性,对应 connectionString 中的I ntegrated Security,虚拟主机,“Integrated Security”可以写成“trusted_connection”。
为 True 时,使用当前的 Windows 帐户凭据进行身份验证,为 False 时,需要在连接中指定用户 ID 和密码。可识别的值为 True、False、Yes、No 以及与 True 等效的 SSPI。
如果没有些则必须写上 uid=sa;pwd=123 之类的设置“uid”也可使用“User ID”,“pwd”也可换为“PassWord”。

SSPI:Microsoft安全支持提供器接口(SSPI)是定义得较全面的公用API,用来获得验证、信息完整性、信息隐私等集成安全服务,以及用于所有分布式应用程序协议的安全方面的服务。
应用程序协议设计者能够利用该接口获得不同的安全性服务而不必修改协议本身。

三、AttachDBFilename
SqlConnectionStringBuilder 的 AttachDBFilename 属性,对应 connectionString 中的 AttachDBFilename,“AttachDBFilename”可以写成“extended properties”,“initial file name”。
AttachDbFileName 属性指定连接打开的时候动态附加到服务器上的数据库文件的位置。
这个属性可以接受数据库的完整路径和相对路径(例如使用|DataDirectory|语法),在运行时这个路径会被应用程序的 App_Data 目录所代替。

四、User Instance
SqlConnectionStringBuilder 的 UserInstance 属性,对应 connectionString 中的 User Instance ,该值指示是否将连接从默认的 SQL Server 实例重定向到在调用方帐户之下运行并且在运行时启动的实例。
UserInstance=true 时,SQLServerExpress 为了把数据库附加到新的实例,建立一个新的进程,在打开连接的用户身份下运行。
在 ASP.NET 应用程序中,这个用户是本地的 ASPNET 帐号或默认的 NetworkService,这依赖于操作系统。
为了安全地附加非系统管理员帐号(例如ASP.NET帐号)提供的数据库文件,建立一个独立的 SQLServer 用户实例是必要的。

五、Initial Catalog 等同于 Database。

六、providerName 指定值“System.Data.OracleClient”,该值指定 ASP.NET 在使用此连接字符串进行连接时应使用 ADO.NET System.Data.OracleClient 提供程序。


PS:
DataDirectory是什么?

今天关于conversion function——转换函数转换函数使用的介绍到此结束,谢谢您的阅读,有关A Diversity-Promoting Objective Function for Neural Conversation Models论文阅读、Cast/Convert Function in Access、CKEditor 5 v33.0.0 发布,改进 conversion/reconversion 系统、connection .server version引发了system.invalidOperationExcep等更多相关知识的信息可以在本站进行查询。

本文标签: