小编Min*_*hoi的帖子

火炬数据集的结构是什么?

我开始使用手电筒7,并且要对数据集进行分类。我已经制作了像素图像和相应的标签。但是,我不知道如何将这些数据输入到割炬中。我从其他人那里读取了一些代码,发现它们正在使用扩展名为'.t7'的数据集,我认为这是张量类型。这样对吗?我不知道如何将我的像素图像(实际上是我通过使用MNIST数据集使用Matlab制作的)转换为与割炬兼容的t7扩展名。必须有t7格式的数据集结构,但我找不到它(标签也是如此)。

总而言之,我有像素图像和标签,并希望将其转换为与手电筒兼容的t7格​​式。

提前致谢!

matlab dataset mnist torch

3
推荐指数
1
解决办法
3561
查看次数

Tensorflow 保护程序似乎覆盖了现有的已保存变量文件

我正在用 tensorflow 编写神经网络代码。我让它在每 1000 个 epoch 中保存变量。所以,我希望为不同的文件保存第 1001 个纪元、第 2001 个纪元、第 3001 个纪元……的变量。下面的代码是我做的保存功能。

def save(self, epoch):
    model_name = "MODEL_save"
    checkpoint_dir = os.path.join(model_name)

    if not os.path.exists(checkpoint_dir):
        os.makedirs(checkpoint_dir)
    self.saver.save(self.sess, checkpoint_dir + '/model', global_step=epoch)
    self.saver.save(self.sess, checkpoint_dir + '/model')
    print("path for saved %s" % checkpoint_dir)
Run Code Online (Sandbox Code Playgroud)

一旦调用该函数,我将这段代码保存两次。因为我想通过使用 'global_step=epoch' 为每 1000 个时期保存变量的历史记录。并且想在没有指定纪元的情况下将最新的变量保存在文件中。每当满足时代条件时,我都会调用此函数,如下所示。

for epoch in xrange(self.m_total_epoch):

    .... CODE FOR NEURAL NETWORK ....

    if epoch%1000 == 1 and epoch != 1:
        self.save(epoch)
Run Code Online (Sandbox Code Playgroud)

假设当前纪元是29326,我希望目录中所有保存的文件来自1001, 2001, 3001 ... 29001。但是,只有部分文件来自26001, 27001, 28001, 29001。我检查过它发生在其他计算机上. 这与我的预期不同。为什么会发生?

python neural-network tensorflow

3
推荐指数
1
解决办法
3055
查看次数

为什么在许多实现中变分自动编码器的损失与纸上的符号相反?

我想我理解了自动编码变分贝叶斯论文。我正在阅读一些实现本文的张量流代码。但我不明白这些代码中的损失函数。由于很多代码都是以相同的方式编写的,因此我可能是错的。

问题是这样的。以下方程来自AEVB 论文在此输入图像描述 损失函数就像这个方程。该方程可以分为两个:正则化项和重构项。因此,就变成了

Loss_function = Regularization_term + Reconstruction_term
Run Code Online (Sandbox Code Playgroud)

然而,许多代码以负号实现此正则化项,例如

Loss_function = -Regularization_term + Reconstruction_term 
Run Code Online (Sandbox Code Playgroud)

例如,在此代码中,第 79 行将正则化项显示为

KLD = -.5 * tf.reduce_sum(1. + enc_logsd - tf.pow(enc_mu, 2) - tf.exp(enc_logsd), reduction_indices=1)
Run Code Online (Sandbox Code Playgroud)

然后,它只是添加到重建术语。

loss = tf.reduce_mean(KLD + BCE)
Run Code Online (Sandbox Code Playgroud)

我不明白。KLD 的符号与论文中的方程相反。类似这样的代码还有很多。我想我错了,但我不知道错在哪里。你能解释一下为什么它应该是这样的吗?

参考代码:代码1代码2代码3

python machine-learning autoencoder deep-learning tensorflow

3
推荐指数
1
解决办法
1925
查看次数

tensorflow的数据集API的返回大小不是常量

我正在使用tensorflow的数据集API.用简单的案例测试我的代码.下面显示了我使用的简单代码.问题是,当数据集大小很小时,似乎数据集API返回的大小不一致.我确信有一个正确的方法来处理它.但即使我阅读了该页面和教程中的所有功能,我也找不到.

import numpy as np
import tensorflow as tf

data_source = tf.zeros([24, 200, 64, 64, 1]) #[number_of_video, steps, pixel_w, pixel_h, channel]
dataset = tf.contrib.data.Dataset.from_tensor_slices(data_source)
dataset = dataset.shuffle(buffer_size=100)
dataset = dataset.batch(16)
dataset = dataset.repeat()

iterator = tf.contrib.data.Iterator.from_structure(dataset.output_types, dataset.output_shapes)
next_element = iterator.get_next()
training_init_op = iterator.make_initializer(dataset)

with tf.Session() as sess:
    sess.run(training_init_op)
    next_elem = next_element.eval()
    print(np.shape(next_elem))
    next_elem = next_element.eval()
    print(np.shape(next_elem))
    next_elem = next_element.eval()
    print(np.shape(next_elem))
    next_elem = next_element.eval()
    print(np.shape(next_elem))
    next_elem = next_element.eval()
    print(np.shape(next_elem))
    next_elem = next_element.eval()
    print(np.shape(next_elem))
    next_elem = next_element.eval()
    print(np.shape(next_elem))
Run Code Online (Sandbox Code Playgroud)

数据集是灰度视频.共有24个视频序列,步长均为200.帧大小为64乘64和单通道.我将批量大小设置为16,缓冲区大小设置为100.但代码的结果是,

(16, …
Run Code Online (Sandbox Code Playgroud)

python iterator bigdata tensorflow tensorflow-datasets

3
推荐指数
1
解决办法
996
查看次数