用tensorflow处理大型图片集是不是需要非常强大的电脑配置?

来源:6-9 编写训练神经网络的方法(下)

慕粉1024131855

2018-04-21

用tensorflow处理大型图片集是不是需要非常强大的电脑配置?我尝试用PhotoshopAI的代码处理我准备的256*256像素的图片集,train的时候崩溃了。后来将每轮训练的图片数和训练轮数改小了才能运行。但运行结果明显不对,下面是运行截图和我改过的代码。

http://img.mukewang.com/szimg/5ada8ff70001578a08090462.jpg

# Hyperparameters 超参数

EPOCHS = 2

BATCH_SIZE = 10

LEARNING_RATE = 0.0002

BETA_1 = 0.5


# 定义判别器模型

def discriminator_model():

    model = tf.keras.models.Sequential()


    model.add(tf.keras.layers.Conv2D(

        32, # 64 个过滤器,输出的深度(depth)是 64

        (5, 5), # 过滤器在二维的大小是(5 * 5)

        padding='same', # same 表示输出的大小不变,因此需要在外围补零2圈

        input_shape=(256, 256, 3) # 输入形状[256, 256, 3]。3 表示 RGB 三原色  256*32

    ))

    model.add(tf.keras.layers.Activation("tanh")) # 添加 Tanh 激活层

    model.add(tf.keras.layers.MaxPool2D(pool_size=(2, 2))) # 池化层 128*32

    model.add(tf.keras.layers.Conv2D(64, (5, 5)))         #128*64

    model.add(tf.keras.layers.Activation("tanh"))

    model.add(tf.keras.layers.MaxPool2D(pool_size=(2, 2))) #64*64

    model.add(tf.keras.layers.Conv2D(128, (5, 5)))        #64*128

    model.add(tf.keras.layers.Activation("tanh"))

    model.add(tf.keras.layers.MaxPool2D(pool_size=(2, 2))) #32*128

    model.add(tf.keras.layers.Conv2D(128, (5, 5)))

    model.add(tf.keras.layers.Activation("tanh"))

    model.add(tf.keras.layers.MaxPool2D(pool_size=(2, 2))) #16*128

    model.add(tf.keras.layers.Conv2D(128, (5, 5)))

    model.add(tf.keras.layers.Activation("tanh"))

    model.add(tf.keras.layers.MaxPool2D(pool_size=(2, 2))) #8*128

    model.add(tf.keras.layers.Flatten()) # 扁平化

    model.add(tf.keras.layers.Dense(1024)) # 1024 个神经元的全连接层

    model.add(tf.keras.layers.Activation("tanh"))

    model.add(tf.keras.layers.Dense(1)) # 1 个神经元的全连接层

    model.add(tf.keras.layers.Activation("sigmoid")) # 添加 Sigmoid 激活层


    return model


# 定义生成器模型

# 从随机数来生成图片

def generator_model():

    model = tf.keras.models.Sequential()

    # 输入的维度是 100, 输出维度(神经元个数)是1024 的全连接层

    model.add(tf.keras.layers.Dense(input_dim=100, units=1024))

    model.add(tf.keras.layers.Activation("tanh"))

    model.add(tf.keras.layers.Dense(128 * 8 * 8)) # 8192 个神经元的全连接层

    model.add(tf.keras.layers.BatchNormalization()) # 批标准化

    model.add(tf.keras.layers.Activation("tanh"))

    model.add(tf.keras.layers.Reshape((8, 8, 128), input_shape=(128 * 8 * 8, ))) # 8 x 8 像素

    model.add(tf.keras.layers.UpSampling2D(size=(2, 2))) # 16 x 16像素

    model.add(tf.keras.layers.Conv2D(128, (5, 5), padding="same"))

    model.add(tf.keras.layers.Activation("tanh"))

    model.add(tf.keras.layers.UpSampling2D(size=(2, 2))) # 32 x 32像素

    model.add(tf.keras.layers.Conv2D(128, (5, 5), padding="same"))

    model.add(tf.keras.layers.Activation("tanh"))

    model.add(tf.keras.layers.UpSampling2D(size=(2, 2))) # 64 x 64像素

    model.add(tf.keras.layers.Conv2D(128, (5, 5), padding="same"))

    model.add(tf.keras.layers.Activation("tanh"))

    model.add(tf.keras.layers.UpSampling2D(size=(2, 2))) # 128 x 128像素

    model.add(tf.keras.layers.Conv2D(128, (5, 5), padding="same"))

    model.add(tf.keras.layers.Activation("tanh"))

    model.add(tf.keras.layers.UpSampling2D(size=(2, 2))) # 256 x 256像素

    model.add(tf.keras.layers.Conv2D(3, (5, 5), padding="same"))

    model.add(tf.keras.layers.Activation("tanh"))

    return model


写回答

3回答

Oscar

2018-04-23

你能否把你用的 256 x 256 的图片集发给我邮箱,我好测试一下看看怎么回事:

enmingx@gmail.com

谢谢

0
0

Oscar

2018-04-23

你的代码不是最新的,请参考这个问答来重置项目把代码改成最新:

https://coding.imooc.com/learn/questiondetail/49642.html

我用你改过的代码来测试,好像还不错嘛,没有出现你的那种奇怪的结果。如下图:

//img.mukewang.com/szimg/5addd6cb0001a0f206110913.jpg

我在公司的电脑上训练的。继续训练中。我反正让它训练着,我设了 Epochs 是 100 轮,所以会比较花时间。训练完了到时候私下联系你。

公司的电脑还不错,虽然是 CPU(没有 Nvidea 的 GPU),但内存是 16 GB,i7 的 CPU (4 核)。

//img.mukewang.com/szimg/5addd7520001138906200158.jpg

训练一步大概是 30 秒左右。所以好像也还可以,256 x 256 的图片不会特别需要高级 GPU,当然了,你要训练快一些肯定还是高级 GPU 更好。

你在邮件里说你那里有些图片像素很大(近千像素),那样的话训练起来很吃力,可以考虑更加强劲的 GPU 来训练,比如 Nvidea 的 Titan 系列:

https://www.nvidia.com/zh-tw/titan/titan-v

不是太贵,一两万多一块(目前最强的是Titan V 显卡,京东上我看了是 22000 多元一块 https://item.jd.com/6630315.html#crumb-wrap )。
我的学员里面有的他们学校实验室做 AI 项目就是买的 Titan 显卡,有的导师让他们买了两块显卡一起用。
你可以咨询一下 Nvidea 的客服,关于你们的需求,应该配备多少块 Titan 比较合适,以及是买 Titan V 还是 Titan XP 或是其他。

1
0

慕粉1024131855

提问者

2018-04-23

老师,我已经将图片集发到你邮箱了,谢谢指点。

0
1
Oscar
嗯,已下载。正在测试。放心,图片集用完之后我会删除的。
2018-04-23
共1条回复

基于Python玩转人工智能最火框架 TensorFlow应用实践

机器学习入门,打牢TensorFlow框架应用是关键!

2214 学习 · 688 问题

查看课程