1.Tensorflow的安装方式:
这个项目中 采用了tensorflow 1.12.0版本(任意TF版本都能使用)
安装方式
pip install tensorflow
2.训练集训练集以及测试及如下(纯手工打造,所以数量不多):
3.实现代码
无论cpu版本 还是gpu都能用, 两千步训练(2分钟左右)就能训练完成
main.py(主要的神经网络代码)
import tensorflow as tf
import numpy as np
from PIL import Image
import os
import random
train_data_dir = r'd:\img\train' # 根据实际情况替换
test_data_dir = r'/Users/hupeng/Downloads/img/test'
def gen_train_data(batch_size=32):
'''
生成训练数据
:param batch_size: 每次训练载入的图片得数目,默认为32
:return: x_data:图片数据,shape=(batch_size, 24, 60),y_data:标签信息, shape=(batch_size, 4)
'''
train_file_name_list = os.listdir(train_data_dir)
selected_train_file_name_list = random.sample(train_file_name_list, batch_size)
x_data = []
y_data = []
for selected_train_file_name in selected_train_file_name_list:
if selected_train_file_name.endswith('.gif'):
captcha_image = Image.open(os.path.join(train_data_dir, selected_train_file_name))
captcha_image_np = np.array(captcha_image)
assert captcha_image_np.shape == (24, 60)
captcha_image_np = np.expand_dims(captcha_image_np, 2)
x_data.append(captcha_image_np)
y_data.append(np.array(list(selected_train_file_name.split('.')[0])).astype(np.int32))
x_data = np.array(x_data).astype(np.float)
y_data = np.array(y_data)
return x_data, y_data
X = tf.placeholder(tf.float32, name="input")
Y = tf.placeholder(tf.int32)
keep_prob = tf.placeholder(tf.float32)
y_one_hot = tf.one_hot(Y, 10, 1, 0)
y_one_hot = tf.cast(y_one_hot, tf.float32)
# keep_prob = 1.0
def net(w_alpha=0.01, b_alpha=0.1):
'''
网络部分,三层卷积层,一个全连接层
:param w_alpha:
:param b_alpha:
:return: 网络输出,Tensor格式
'''
x_reshape = tf.reshape(X, (