鱼C论坛

 找回密码
 立即注册
查看: 3120|回复: 11

为何在Tensorflow的keras里搭建网络八股训练神经网络速度极慢?

[复制链接]
发表于 2020-11-25 21:18:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 小古比鱼 于 2020-11-25 21:34 编辑

IRIS数据集:
  1. import tensorflow as tf
  2. from sklearn import datasets
  3. import numpy as np

  4. x_train = datasets.load_iris().data
  5. y_train = datasets.load_iris().target

  6. np.random.seed(116)
  7. np.random.shuffle(x_train)
  8. np.random.seed(116)
  9. np.random.shuffle(y_train)
  10. tf.random.set_seed(116)

  11. model = tf.keras.models.Sequential([
  12.     tf.keras.layers.Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())
  13. ])

  14. model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),
  15.               loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
  16.               metrics=['sparse_categorical_accuracy'])

  17. model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)

  18. model.summary()
复制代码

MNIST数据集:
  1. import tensorflow as tf

  2. mnist = tf.keras.datasets.mnist
  3. (x_train, y_train), (x_test, y_test) = mnist.load_data()
  4. x_train, x_test = x_train / 255.0, x_test / 255.0

  5. model = tf.keras.models.Sequential([
  6.     tf.keras.layers.Flatten(),
  7.     tf.keras.layers.Dense(128, activation='relu'),
  8.     tf.keras.layers.Dense(10, activation='softmax')
  9. ])

  10. model.compile(optimizer='adam',
  11.               loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
  12.               metrics=['sparse_categorical_accuracy'])

  13. model.fit(x_train, y_train, batch_size=32, epochs=5, validation_data=(x_test, y_test), validation_freq=1)
  14. model.summary()
复制代码

这两段代码在执行到“model.fit()”一句时训练速度极慢,输出内容如图所示,剩余时间越来越长,明显有问题,请问是否因为没有GPU或非Anaconda环境的缘故?若将代码复制到Jupyter Notebook上运行则会快得多,十几秒钟就跑完了,真奇怪……
【注】我已经将MNIST数据集手动下载并存放在了系统盘的相应文件夹(C:\Users\用户名\.keras\datasets),为什么它运行的时候还要下载啊?

IRIS数据集

IRIS数据集

MNIST数据集

MNIST数据集
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-25 23:18:23 | 显示全部楼层


我 PyCharm 下载 MNIST数据集 时候也蛮慢的

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-26 09:26:08 | 显示全部楼层
本帖最后由 小古比鱼 于 2020-11-26 09:59 编辑
Twilight6 发表于 2020-11-25 23:18
我 PyCharm 下载 MNIST数据集 时候也蛮慢的


我用的不是PyCharm,请问有没有什么解决办法?另外鸢尾花数据集应该训练很快才对啊,可我这里依然需要几分钟才能训练完……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-26 10:17:01 | 显示全部楼层
另外为啥输出会有那么多问号?好像不正常啊……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-13 15:01:17 | 显示全部楼层
  1. with tf.device('/cpu:0'):
  2.     model.fit(training_images, training_labels, epochs=5,callbacks=[callbacks])#out: 89% accurate
  3.     test_loss, test_acc = model.evaluate(test_images, test_labels)
复制代码


加第一排代碼,就快了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-13 16:00:36 | 显示全部楼层
春風十里君 发表于 2020-12-13 15:01
加第一排代碼,就快了。

好像不行啊,似乎加不加这句都没什么区别……请问这行代码是什么意思?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-13 16:30:18 | 显示全部楼层
小古比鱼 发表于 2020-12-13 16:00
好像不行啊,似乎加不加这句都没什么区别……请问这行代码是什么意思?

加了, 下面兩行就在 CPU跑。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-13 17:18:43 | 显示全部楼层
春風十里君 发表于 2020-12-13 16:30
加了, 下面兩行就在 CPU跑。

如果不加呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-14 12:10:39 | 显示全部楼层

不加,就在GPU跑。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-14 12:14:20 | 显示全部楼层

可是小古比鱼的机子上本来就没有装GPU啊……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-14 14:13:34 | 显示全部楼层
我错了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-14 16:49:33 | 显示全部楼层

没事。可能就是因为没有GPU的缘故。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-30 09:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表