帮我在Tensorflow框架下使用CNN预测年龄与性别的代码
时间: 2023-06-16 21:02:15 浏览: 71
好的,以下是一个基于TensorFlow框架的CNN模型,用于预测年龄和性别。
首先,我们需要导入所需的库:
```python
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Dropout, Flatten, Dense
```
接下来,我们设置一些常量和超参数:
```python
IMAGE_SIZE = (150, 150)
BATCH_SIZE = 32
EPOCHS = 30
```
然后,我们创建一个ImageDataGenerator对象来对图像进行数据增强和预处理:
```python
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
```
接着,我们从文件夹中加载数据并进行预处理:
```python
train_generator = train_datagen.flow_from_directory(
'train_data',
target_size=IMAGE_SIZE,
batch_size=BATCH_SIZE,
class_mode='categorical')
test_generator = test_datagen.flow_from_directory(
'test_data',
target_size=IMAGE_SIZE,
batch_size=BATCH_SIZE,
class_mode='categorical')
```
接下来,我们创建一个Sequential模型,并添加一些卷积层、池化层和全连接层:
```python
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dense(2, activation='softmax'))
```
然后,我们编译模型并开始训练:
```python
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
history = model.fit(train_generator,
epochs=EPOCHS,
validation_data=test_generator)
```
最后,我们可以使用训练好的模型对新的图像进行预测:
```python
import numpy as np
from tensorflow.keras.preprocessing import image
img_path = 'test_image.jpg'
img = image.load_img(img_path, target_size=IMAGE_SIZE)
img_array = image.img_to_array(img)
img_array = np.expand_dims(img_array, axis=0)
prediction = model.predict(img_array)
print(prediction)
```
这个模型可以预测出输入图像的性别和年龄,其中性别有两个类别(男性和女性),年龄则被拆分成了一系列类别。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)