【发布时间】:2018-10-19 22:06:27
【问题描述】:
我开始使用 keras 和 tensorflow 进行深度学习。在第一阶段,我有一个疑问。当我使用tf.contrib.layers.flatten (Api 1.8) 来展平图像时(也可以是多通道)。
这与使用 numpy 中的 flatten 函数有何不同?
这对训练有什么影响。我可以看到 tf.contrib.layers.flatten 比 numpy flatten 花费的时间更长。是不是在做更多的事情?
这是very close question,但这里接受的答案包括 Theano,并不能完全解决我的疑问。
示例:
假设我有一个(10000,2,96,96) 形状的训练数据。现在我需要输出为(10000,18432) 形状。我可以使用 tensorflow flatten 或使用像
X_reshaped = X_train.reshape(*X_train.shape[:1], -2)
它对训练有什么影响?最佳实践是什么?
【问题讨论】:
-
运行
X_reshaped.print()会得到什么? -
嗨,(10000,18432)这是形状或X_reshape
-
试图了解您的网络:您的训练形状
(10000,2,96,96)指的是(num_images, num_colourchannels, x_pixel, y_pixel),我说得对吗?在几个不同的场合,我看到了(num_images, x_pixel, y_pixel, num_colourchannels)的形状。你的选择有影响吗?你是如何激励它的?谢谢! -
啊,你是对的。两者都是可能的。如果处理得当,它不会产生影响。这只是您的 keras 设置的问题。只需设置您的 keras.json 文件(在
/.keras 中)并将其设置为默认配置“channels_first”或“channels_last”。此设置将仅适用于您的机器。
标签: python numpy tensorflow machine-learning keras