TypeError: __sigmoid() takes 1 positional argument but 2 were given

本文解决了在实现Sigmoid函数过程中出现TypeError的问题,错误提示为 '__sigmoid() takes 1 positional argument but 2 were given'。问题根源在于函数定义时参数数量不足,正确的定义应当包含两个参数。

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

``` X_train = np.load('X_train.npy') y_train = np.load('y_train.npy') X_val = np.load('X_val.npy') y_val = np.load('y_val.npy') X_test = np.load('X_test.npy') y_test = np.load('y_test.npy') class DDCTrainer: def __init__(self, input_dim): self.input_dim = input_dim self.domain_loss_weight = 0.1 # 领域损失权重 # 构建特征提取网络 self.feature_extractor = self.build_feature_extractor() # 完整模型构建(包括分类头) self.classifier_model = self.build_classifier(self.feature_extractor) @staticmethod def build_feature_extractor(): model = Sequential([ Dense(64, activation='relu', input_shape=(None,)), Dropout(0.5), Dense(32, activation='relu'), ]) return model @staticmethod def build_domain_discriminator(feature_extractor_output_dim): model = Sequential([ Dense(16, activation='relu', input_shape=(feature_extractor_output_dim,)), Dense(1, activation='sigmoid'), # 判断是否属于源领域或目标领域 ]) return model def build_classifier(self, feature_extractor): classifier_head = Sequential([ feature_extractor, Dense(2, activation='softmax') # 分类任务为两类 ]) classifier_head.compile(optimizer=Adam(), loss='sparse_categorical_crossentropy', metrics=['accuracy']) return classifier_head def compute_domain_confusion(self, features_source, features_target): """ 计算领域间混淆度 """ mean_features_source = np.mean(features_source, axis=0) mean_features_target = np.mean(features_target, axis=0) confusion_distance = euclidean(mean_features_source, mean_features_target) return confusion_distance def simulate_ddc_training(ddc_trainer, source_data, target_data, epochs=10, batch_size=32): for epoch in range(epochs): # 提取特征 features_source = ddc_trainer.feature_extractor.predict(source_data[0]) features_target = ddc_trainer.feature_extractor.predict(target_data[0]) # 更新特征提取器以最小化领域差异 domain_confusion = ddc_trainer.compute_domain_confusion(features_source, features_target) print(f"Epoch {epoch + 1}/{epochs} - Domain Confusion Distance: {domain_confusion:.4f}") # 对齐分布的同时训练分类器 history = ddc_trainer.classifier_model.fit( *source_data, validation_data=target_data, epochs=1, batch_size=batch_size, verbose=0 ) val_accuracy = history.history['val_accuracy'][0] print(f"\tValidation Accuracy on Target Data: {val_accuracy * 100:.2f}%\n") if __name__ == "__main__": # 初始化 DDC Trainer 并设置输入维度 input_dim = X_train.shape[1] trainer = DDCTrainer(input_dim=input_dim) # 模拟源域和目标域划分(假设一部分是源域,另一部分为目标域) source_data = (X_train[:len(X_train) // 2], y_train[:len(y_train) // 2]) # 源域 target_data = (X_val, y_val) # 目标域 # 开始模拟 DDC 过程 simulate_ddc_training(trainer, source_data, target_data, epochs=10, batch_size=32)```TypeError: build_feature_extractor() missing 1 required positional argument: 'input_dim'
最新发布
04-01
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值