小编Bru*_* KM的帖子

在TensorFlow中实现im2col

我希望在TensorFlow中实现类似于2D卷积的操作.根据我的理解,实现卷积的最常见方法是首先im2col对图像应用操作(参见此处 - " 作为矩阵乘法实现 " 小节) - 将图像转换为具有单独"块"的2D矩阵的操作.将内核应用为展平列的图像.

换句话说,上述链接资源的摘录解释了什么im2col做得很好:

[...]例如,如果输入为[227x227x3] (格式为高度x宽度x n_channels)并且要在步幅4处与11x11x3滤波器进行卷积,那么我们将采用[11x11x3]像素块输入并将每个块拉伸到一个大小为11*11*3 = 363的列向量中.在步长为4的输入中迭代此过程会给出(227-11)/ 4 + 1 = 55个沿宽度和高度的位置,从而导致的输出矩阵X_colim2col大小[363 X 3025],其中每列是一个伸出感受域和有55*55 =他们的3025在总的.请注意,由于感知字段重叠,因此输入卷中的每个数字都可以在多个不同的列中重复.

正如我从TensorFlow文档中所理解的那样,这也是内部完成的内容tf.nn.conv2d.

现在,我想im2col分别在TensorFlow中实现所述操作(因为我希望能够访问这个中间结果).由于这涉及以非平凡的方式复制值,我将如何为此操作自己构建相对有效的计算图?同样,如何实现反向操作?

python machine-learning neural-network conv-neural-network tensorflow

11
推荐指数
1
解决办法
2177
查看次数

TensorFlow 如何安全地手动终止训练 (KeyboardInterrupt)

我希望向我的代码添加功能,这样如果我想在任何时候终止代码,它都会安全地终止训练并保存变量。尽管我已经尝试寻找更好的解决方案,但我认为捕捉KeyboardInterrupt异常是我最好的选择。

然而,它会安全吗?更具体地说,以下代码是否有效:

with tf.Session() as sess    
    try:
        for i in range(FLAGS.max_steps):
            sess.run(train_op, feed_dict=some_feed_dictionary)
            # Some other summary writing and evaluative operations
    except KeyboardInterrupt:
        print("Manual interrupt occurred.")

    print('Done training for {} steps'.format(global_steps))
    save_path = saver.save(sess, 'Standard CNN', global_step=global_steps, write_meta_graph=False)
Run Code Online (Sandbox Code Playgroud)

或者考虑到键盘中断可以在任何 tensorflow 操作的中间发生,它是否不安全并且可能导致保存文件损坏?有没有足够的方法来做到这一点?

python neural-network tensorflow

5
推荐指数
1
解决办法
2243
查看次数

如何在TensorFlow中正确实现卷积的丢包

根据关于Dropout的原始论文,正则化方法可以应用于卷积层,通常可以提高它们的性能.TensorFlow功能tf.nn.dropout通过提供一个noise_shape参数来支持,允许用户选择张量的哪些部分将独立退出.然而,论文和文献都没有明确解释哪些维度应该独立保存,而TensorFlow对noise_shape工作原理的解释还不清楚.

只有带有noise_shape [i] == shape(x)[i]的维度才会做出独立的决定.

我假设对于形状的典型CNN层输出,[batch_size, height, width, channels]我们不希望单独的行或列自己丢失,而是整个通道(这将等同于完全连接的NN中的节点),与示例无关(即,批量中的不同示例可以删除不同的通道).我在这个假设中是否正确?

如果是这样,如何使用noise_shape参数实现具有这种特异性的辍学?可不可能是:

noise_shape=[batch_size, 1, 1, channels]
Run Code Online (Sandbox Code Playgroud)

要么:

noise_shape=[1, height, width, 1]
Run Code Online (Sandbox Code Playgroud)

machine-learning neural-network conv-neural-network tensorflow

5
推荐指数
1
解决办法
1942
查看次数

对于可变长度特征,使用tf.train.SequenceExample优于tf.train.Example有什么优势?

最近,我读在TensorFlow无证featuers指南,因为我需要通过可变长度的序列作为输入。但是,我发现该协议tf.train.SequenceExample相对容易混淆(特别是由于缺乏文档),并设法使用tf.train.Example罚款来构建输入管道。

使用有什么好处tf.train.SequenceExample吗?在存在专用于可变长度序列的协议时,使用标准示例协议似乎是骗子,但这会带来任何后果吗?

tensorflow

5
推荐指数
2
解决办法
4719
查看次数

TensorFlow相当于numpy.all()

如标题中所述,是否有一个TensorFlow等效的numpy.all()函数来检查bool张量中的所有值是否都是True?实施此类检查的最佳方法是什么?

tensorflow

4
推荐指数
1
解决办法
789
查看次数

如何在保留Python采样频率的同时更改wav文件的速度

我希望将音频文件(.wav格式)的速度更改为少量(±25%)。问题是我需要保留文件的先前采样率。两种解决方案都涉及速度和螺距的变化,以及仅速度变化(速度变化)的方法都可以使用,因为理想情况下,我想将两者分开进行。

python audio audio-processing

2
推荐指数
1
解决办法
1584
查看次数