.net mvc 列名 'Discriminator' 无效

本文介绍在ASP.NET MVC4环境中使用Entity Framework 5 CodeFirst时遇到的错误:列名'Discriminator'无效,并提供了解决方案。问题源于实体类继承结构,子类未正确配置导致。解决方法为在子类中添加[NotMapped]特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:asp.net 4.0 + MVC 4 + Entity Framework 5
异常:使用code first 碰到错误:列名 'Discriminator' 无效。这是一个很少见的错误,搜索了很久才发现是code first 的poco实体对象的继承问题。
比如,我定义了一个实体类,对应数据库的Project表:
public class Project
{
    int Id { get; set; }
    string Name { get; set; }
}
后来又定义了一个子类ChildProject继承于它,但是子类不对应数据库任何表:
public class ChildProject : Project
{

}

于是每次EF的Context访问到Project或者ChildProject的时候,都出现了错误:列名 'Discriminator' 无效。
解决办法:子类并不映射到任何数据库,加上一个不映射的属性[NotMapped]就可以了。

[NotMapped]
public class ChildProject : Project
{

}


### GAN 中的 Discriminator 实现与解释 #### 判别器的功能 在生成对抗网络(GAN)中,判别器的作用是对输入数据进行分类,判断其是来自真实数据分布还是由生成器生成的数据。具体来说,判别器的目标是最小化错误率,从而能够准确地区分真实样本和生成样本[^2]。 #### 判别器的设计原则 为了实现这一功能,判别器通常设计为一个多层神经网络结构。该网络接收图像或其他类型的输入,并输出一个介于 0 和 1 的概率值,表示输入属于真实数据的概率。例如,在典型的 GAN 结构中,判别器会接受两种类型的数据:一种是从实际数据集中采样的真实数据;另一种是由生成器生成的假数据。通过这种方式,判别器逐渐学会识别两者之间的差异[^4]。 以下是定义判别器的一个简单 Python 示例: ```python from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Flatten def define_discriminator(image_shape): model = Sequential() # 添加卷积层和平坦化操作以提取特征 model.add(Flatten(input_shape=image_shape)) model.add(Dense(128, activation='relu')) # 输出层使用 sigmoid 函数来计算二分类概率 model.add(Dense(1, activation='sigmoid')) # 编译模型 opt = Adam(lr=0.0002, beta_1=0.5) model.compile(loss='binary_crossentropy', optimizer=opt, metrics=['accuracy']) return model ``` 此代码片段展示了一个基本的判别器架构,其中包含了全连接层以及激活函数 `ReLU` 和最终用于分类的 `Sigmoid` 激活函数[^2]。 #### 条件 GAN 中的改进 当引入条件信息时,如类别标签或特定属性,可以通过多种方式增强判别器的表现力。例如,在有条件 GAN 中,可以将类别信息附加到输入向量或者调整内部参数传递机制,使得模型更加专注于某些方面的特性[^3]。 #### 训练过程中的注意事项 值得注意的一点是在联合训练过程中需固定部分权重以防过拟合或不稳定现象发生。比如上面提到的例子中就设置了 `d_model.trainable = False` ,目的是防止更新期间破坏已经学到的知识体系平衡状态。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值