Fake Numbers

#include<iostream>
using namespace std;
#define Max 1000
int s[Max];
int main(){
	int n, i, j, k;
	bool b = false;
	cin >> n;
	for(i = 0; i < n; ++i)
		cin >> s[i];
	for(i = 0; i < n; ++i){
		for(j = 0; j < n; ++j){
			if(j % 2 == 0) s[j] = (s[j] + 1) % n;
			else s[j] = (s[j] - 1 >= 0 ? s[j] - 1 : s[j] + n - 1);
		}
		for(k = 0; k < n; ++k){
			if(s[k] != k) break;
		}
		if(k == n) {b = true; break;}
	}
	if(b) cout << "Yes" << endl;
	else cout << "No" << endl;
	return 0;
}

内容概要:该论文聚焦于T2WI核磁共振图像超分辨率问题,提出了一种利用T1WI模态作为辅助信息的跨模态解决方案。其主要贡献包括:提出基于高频信息约束的网络框架,通过主干特征提取分支和高频结构先验建模分支结合Transformer模块和注意力机制有效重建高频细节;设计渐进式特征匹配融合框架,采用多阶段相似特征匹配算法提高匹配鲁棒性;引入模型量化技术降低推理资源需求。实验结果表明,该方法不仅提高了超分辨率性能,还保持了图像质量。 适合人群:从事医学图像处理、计算机视觉领域的研究人员和工程师,尤其是对核磁共振图像超分辨率感兴趣的学者和技术开发者。 使用场景及目标:①适用于需要提升T2WI核磁共振图像分辨率的应用场景;②目标是通过跨模态信息融合提高图像质量,解决传统单模态方法难以克服的高频细节丢失问题;③为临床诊断提供更高质量的影像资料,帮助医生更准确地识别病灶。 其他说明:论文不仅提供了详细的网络架构设计与实现代码,还深入探讨了跨模态噪声的本质、高频信息约束的实现方式以及渐进式特征匹配的具体过程。此外,作者还对模型进行了量化处理,使得该方法可以在资源受限环境下高效运行。阅读时应重点关注论文中提到的技术创新点及其背后的原理,理解如何通过跨模态信息融合提升图像重建效果。
import tensorflow as tf import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.preprocessing import MinMaxScaler import os # 1. 数据预处理 (保持不变) def load_and_preprocess_data(csv_path): """加载并预处理双色球历史数据""" df = pd.read_csv(csv_path) red_balls = df.iloc[:, 0:6].values.astype(np.float32) blue_balls = df.iloc[:, 6:].values.reshape(-1, 1).astype(np.float32) red_scaler = MinMaxScaler(feature_range=(0, 1)).fit(red_balls) blue_scaler = MinMaxScaler(feature_range=(0, 1)).fit(blue_balls) red_normalized = red_scaler.transform(red_balls) blue_normalized = blue_scaler.transform(blue_balls) combined = np.hstack((red_normalized, blue_normalized)) X_train, _ = train_test_split(combined, test_size=0.2, random_state=42) return X_train, red_scaler, blue_scaler # 2. 重构GAN模型 class DualColorGAN(tf.keras.Model): def __init__(self, latent_dim=100): super(DualColorGAN, self).__init__() self.latent_dim = latent_dim # 生成器 self.generator = tf.keras.Sequential([ tf.keras.layers.Dense(256, activation='relu', input_dim=latent_dim), tf.keras.layers.BatchNormalization(), tf.keras.layers.Dense(512, activation='relu'), tf.keras.layers.BatchNormalization(), tf.keras.layers.Dense(1024, activation='relu'), tf.keras.layers.BatchNormalization(), tf.keras.layers.Dense(7, activation='sigmoid') ]) # 判别器 self.discriminator = tf.keras.Sequential([ tf.keras.layers.Dense(512, activation='relu', input_dim=7), tf.keras.layers.Dense(256, activation='relu'), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dense(1, activation='sigmoid') ]) # 分离优化器 (关键修复) self.g_optimizer = tf.keras.optimizers.Adam(0.0002, beta_1=0.5) self.d_optimizer = tf.keras.optimizers.Adam(0.0002, beta_1=0.5) self.loss_fn = tf.keras.losses.BinaryCrossentropy() def compile(self, **kwargs): super().compile(**kwargs) # 重构训练步骤 def train_step(self, real_data): batch_size = tf.shape(real_data)[0] # 训练判别器 with tf.GradientTape() as d_tape: noise = tf.random.normal([batch_size, self.latent_dim]) generated_data = self.generator(noise, training=False) real_output = self.discriminator(real_data, training=True) fake_output = self.discriminator(generated_data, training=True) # 损失计算 real_loss = self.loss_fn(tf.ones_like(real_output), real_output) fake_loss = self.loss_fn(tf.zeros_like(fake_output), fake_output) d_loss = (real_loss + fake_loss) / 2 # 仅更新判别器变量 d_grads = d_tape.gradient(d_loss, self.discriminator.trainable_variables) self.d_optimizer.apply_gradients(zip(d_grads, self.discriminator.trainable_variables)) # 训练生成器 with tf.GradientTape() as g_tape: noise = tf.random.normal([batch_size, self.latent_dim]) generated_data = self.generator(noise, training=True) fake_output = self.discriminator(generated_data, training=True) g_loss = self.loss_fn(tf.ones_like(fake_output), fake_output) # 仅更新生成器变量 g_grads = g_tape.gradient(g_loss, self.generator.trainable_variables) self.g_optimizer.apply_gradients(zip(g_grads, self.generator.trainable_variables)) return {"d_loss": d_loss, "g_loss": g_loss} # 3. 训练与预测 def train_and_predict(csv_path, epochs=5000, batch_size=32): X_train, red_scaler, blue_scaler = load_and_preprocess_data(csv_path) dataset = tf.data.Dataset.from_tensor_slices(X_train).shuffle(1000).batch(batch_size) gan = DualColorGAN(latent_dim=100) gan.compile() # 训练前构建模型 (避免变量延迟创建) dummy_input = tf.random.normal([1, 100]) _ = gan.generator(dummy_input) _ = gan.discriminator(dummy_input) for epoch in range(epochs): for batch in dataset: metrics = gan.train_step(batch) if epoch % 500 == 0: print(f"Epoch {epoch}, D Loss: {metrics['d_loss']:.4f}, G Loss: {metrics['g_loss']:.4f}") # 生成预测号码 (保持不变) def generate_numbers(n=5): noise = tf.random.normal(shape=(n, 100)) generated = gan.generator(noise).numpy() red_generated = generated[:, :6] blue_generated = generated[:, 6:] red_denorm = red_scaler.inverse_transform(red_generated) blue_denorm = blue_scaler.inverse_transform(blue_generated) red_denorm = np.clip(red_denorm, 1, 33).astype(int) blue_denorm = np.clip(blue_denorm, 1, 16).astype(int) results = [] for i in range(n): unique_red = np.unique(red_denorm[i]) while len(unique_red) < 6: new_red = np.random.randint(1, 34, 6 - len(unique_red)) unique_red = np.unique(np.concatenate([unique_red, new_red])) sorted_red = np.sort(unique_red[:6]) results.append({ "红球": sorted_red.tolist(), "蓝球": int(blue_denorm[i][0]) }) return results return generate_numbers() # 4. 使用示例 if __name__ == "__main__": csv_path = "D:/worker/lottery_results7.csv" predictions = train_and_predict(csv_path, epochs=300) print("\n双色球预测号码:") for i, pred in enumerate(predictions, 1): print(f"预测组 {i}: 红球: {pred['红球']}, 蓝球: {pred['蓝球']}") C:\Users\power\AppData\Roaming\Python\Python39\site-packages\keras\src\layers\core\dense.py:87: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead. super().__init__(activity_regularizer=activity_regularizer, **kwargs) --------------------------------------------------------------------------- ValueError Traceback (most recent call last) Cell In[1], line 145 143 if __name__ == "__main__": 144 csv_path = "D:/worker/lottery_results7.csv" --> 145 predictions = train_and_predict(csv_path, epochs=300) 147 print("\n双色球预测号码:") 148 for i, pred in enumerate(predictions, 1): Cell In[1], line 103, in train_and_predict(csv_path, epochs, batch_size) 101 dummy_input = tf.random.normal([1, 100]) 102 _ = gan.generator(dummy_input) --> 103 _ = gan.discriminator(dummy_input) 105 for epoch in range(epochs): 106 for batch in dataset: File ~\AppData\Roaming\Python\Python39\site-packages\keras\src\utils\traceback_utils.py:122, in filter_traceback.<locals>.error_handler(*args, **kwargs) 119 filtered_tb = _process_traceback_frames(e.__traceback__) 120 # To get the full stack trace, call: 121 # `keras.config.disable_traceback_filtering()` --> 122 raise e.with_traceback(filtered_tb) from None 123 finally: 124 del filtered_tb File ~\AppData\Roaming\Python\Python39\site-packages\keras\src\layers\input_spec.py:227, in assert_input_compatibility(input_spec, inputs, layer_name) 222 for axis, value in spec.axes.items(): 223 if value is not None and shape[axis] not in { 224 value, 225 None, 226 }: --> 227 raise ValueError( 228 f'Input {input_index} of layer "{layer_name}" is ' 229 f"incompatible with the layer: expected axis {axis} " 230 f"of input shape to have value {value}, " 231 "but received input with " 232 f"shape {shape}" 233 ) 234 # Check shape. 235 if spec.shape is not None: ValueError: Exception encountered when calling Sequential.call(). Input 0 of layer "dense_4" is incompatible with the layer: expected axis -1 of input shape to have value 7, but received input with shape (1, 100) Arguments received by Sequential.call(): • inputs=tf.Tensor(shape=(1, 100), dtype=float32) • training=None • mask=None 根据ValueError的要求修改完善代码,并生成完整代码
08-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值