这是一篇我用chatGPT写的AI绘画代码,但是第一行导入numpy就出了问题,tensorflow也是报错,我确定用pip下载了这两个库和模块,并且设置环境变量后仍然无效,以下是我的问题代码:
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten, Reshape
from tensorflow.keras.layers import Conv2D, Conv2DTranspose
from tensorflow.keras.optimizers import Adam
# 定义生成器模型
def build_generator():
model = Sequential()
model.add(Dense(128 * 7 * 7, input_dim=100))
model.add(Reshape((7, 7, 128)))
model.add(Conv2DTranspose(64, (4, 4), strides=(2, 2), padding='same'))
model.add(Conv2DTranspose(1, (7, 7), activation='sigmoid', padding='same'))
return model
# 定义判别器模型
def build_discriminator():
model = Sequential()
model.add(Conv2D(64, (3, 3), strides=(2, 2), padding='same', input_shape=(28, 28, 1)))
model.add(Conv2D(128, (3, 3), strides=(2, 2), padding='same'))
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))
return model
# 构建生成对抗网络模型
def build_gan(generator, discriminator):
model = Sequential()
model.add(generator)
model.add(discriminator)
return model
# 生成随机噪声样本
def generate_noise(batch_size, noise_dim):
return np.random.normal(0, 1, size=(batch_size, noise_dim))
# 加载手写数字数据集
(X_train, _), (_, _) = mnist.load_data()
X_train = X_train.reshape(-1, 28, 28, 1)
X_train = X_train.astype('float32') / 255.0
# 定义模型参数和优化器
noise_dim = 100
batch_size = 128
steps_per_epoch = len(X_train) // batch_size
epochs = 20
# 构建生成器和判别器
generator = build_generator()
discriminator = build_discriminator()
# 设置生成器的训练过程
discriminator.trainable = False
gan = build_gan(generator, discriminator)
gan.compile(loss='binary_crossentropy', optimizer=Adam())
# 开始训练
for epoch in range(epochs):
for step in range(steps_per_epoch):
# 训练判别器
noise = generate_noise(batch_size, noise_dim)
generated_images = generator.predict(noise)
real_images = X_train[np.random.randint(0, X_train.shape[0], size=batch_size)]
X = np.concatenate([real_images, generated_images])
y = np.concatenate([np.ones((batch_size, 1)), np.zeros((batch_size, 1))])
discriminator_loss = discriminator.train_on_batch(X, y)
# 训练生成器
noise = generate_noise(batch_size, noise_dim)
y = np.ones((batch_size, 1))
generator_loss = gan.train_on_batch(noise, y)
# 输出损失信息
print(f"Epoch: {epoch+1}/{epochs}, Step: {step+1}/{steps_per_epoch}, "
f"Discriminator Loss: {discriminator_loss:.4f}, Generator Loss: {generator_loss:.4f}")
# 生成并展示随机样本
noise = generate_noise(10, noise_dim)
generated_images = generator.predict(noise)
fig, axs = plt.subplots(2, 5)
count = 0
for i in range(2):
for j in range(5):
axs[i,j].imshow(generated_images[count, :, :, 0], cmap='gray')
axs[i,j].axis('off')
count += 1
plt.show()
报错信息:
D:\AI\venv\Scripts\python.exe D:\AI\main.py
Traceback (most recent call last):
File "D:\AI\main.py", line 1, in <module>
import numpy as np
ModuleNotFoundError: No module named 'numpy'
Process finished with exit code 1
问题点: 在虚拟环境venv下运行项目,缺少numpy模块
分析: 当前环境和设置的系统环境不是同一个,导致模块缺失报错.
解决办法: 删除venv文件夹,然后重新设定运行环境.
pip install numpy安装模块numpy