```python import numpy as np # 生成 7*7 的随机输入数据 input_data = np.random.rand(7, 7) # 初始化卷积核为 3*3 的随机值 kernel = np.random.rand(3, 3) # 定义卷积函数 def conv2d(image, kernel, stride=1, padding=1): # 计算输出的形状 output_height = (image.shape[0] - kernel.shape[0] + 2 * padding) // stride + 1 output_width = (image.shape[1] - kernel.shape[1] + 2 * padding) // stride + 1 output = np.zeros((output_height, output_width)) # 填充输入数据 image_padded = np.pad(image, padding, mode='constant') for i in range(output_height): for j in range(output_width): output[i, j] = np.sum(image_padded[i * stride:i * stride + kernel.shape[0], j * stride:j * stride + kernel.shape[1]] * kernel) return output # 进行卷积操作 conv_output = conv2d(input_data, kernel) # 定义最大池化函数 def max_pooling(image, pool_size=2, stride=2): output_height = (image.shape[0] - pool_size) // stride + 1 output_width = (image.shape[1] - pool_size) // stride + 1 output = np.zeros((output_height, output_width)) for i in range(output_height): for j in range(output_width): output[i, j] = np.max(image[i * stride:i * stride + pool_size, j * stride:j * stride + pool_size]) return output # 进行最大池化操作 pool_output = max_pooling(conv_output) print(pool_output) ``` 额外需要注意的逻辑点: 1. 随机生成的输入数据和卷积核的值可能会影响最终的结果,多次运行结果可能不同。 2. 卷积和池化操作的步幅和尺寸要根据实际需求合理设置。 3. 注意处理输入数据的边界情况,确保计算不会越界。 [2024-11-28 17:17:25 | AI写代码神器 | 494点数解答]