Har*_*moz 5 python numpy machine-learning keras tensorflow
我开始使用keras和tensorflow深入学习东西.在第一阶段,我感到疑惑.当我使用tf.contrib.layers.flatten(Api 1.8)平整图像时(也可以是多通道).
这与使用numpy的flatten函数有什么不同?这对培训有何影响.我可以看到tf.contrib.layers.flatten比numpy flatten需要更长的时间.它正在做更多的事情吗?
这是一个非常接近的问题,但这里接受的答案包括Theano并没有完全解决我的疑虑.
示例:假设我有一个(10000,2,96,96)形状的训练数据.现在我需要输出(10000,18432)形状.我可以使用tensorflow flatten或使用像numpy flatten这样做
X_reshaped = X_train.reshape(*X_train.shape[:1], -2)
Run Code Online (Sandbox Code Playgroud)
它在培训方面有何不同,哪种方法最佳?
np.flatten和tf.layers.flatten(或tf.contrib.layers.flatten)之间的最大区别是 numpy 操作仅适用于静态 nd 数组,而 tensorflow 操作可以与动态张量一起使用。在这种情况下,动态意味着只有在运行时(训练或测试)才能知道确切的形状。
所以我的建议很简单:
np.flatten. 这避免了不必要的开销并返回 numpy 数组。flattentensorflow 提供的任何操作。在这两者之间,tf.layers.flatten是更好的选择,因为tf.layersAPI 比tf.contrib.*.模型是用于创建可以训练的神经网络的符号图。当您将图形从输入连接到输出时,将会有一个正确的连接并且反向传播将正常工作。
如果您不打算创建网络,请不要使用 TF 层。如果您的目标只是展平数组,则不需要神经网络。
现在,如果在模型内部,您需要在不丢失连接和反向传播的情况下更改数据格式,请使用扁平层。
| 归档时间: |
|
| 查看次数: |
1207 次 |
| 最近记录: |