小编Pau*_*l O的帖子

Autoencoder中的绑定权重

我一直在寻找自动编码器,并一直在想是否使用绑定的重量.我打算将它们作为预训练步骤进行堆叠,然后使用它们的隐藏表示来提供NN.

使用解开的权重,它看起来像:

F(X)=σ 2(b 2 + w ^ 21(b 1 + w ^ 1*X))

使用绑定的权重,它看起来像:

F(X)=σ 2(b 2 + w ^ 1 Ť1(b 1 + w ^ 1*X))

从一个非常简单的观点来看,可以说,绑定权重确保编码器部分在给定体系结构的情况下生成最佳表示,如果权重是独立的,那么解码器可以有效地采用非最优表示并仍然对其进行解码?

我问,因为如果解码器出现"魔术"并且我打算只使用编码器来驱动我的NN,那不会有问题.

machine-learning neural-network autoencoder deep-learning

10
推荐指数
1
解决办法
4727
查看次数

如果你想绑定权重,如何处理自动编码器/解码器中的偏差

我了解如何在自动编码器/解码器中绑定权重,即在解码器中使用编码器权重的转置。然而,目前尚不清楚如何处理这些偏见。

如果举例来说,

编码器:
4 个特征 -> 3 个隐藏 -> 2 个隐藏

解码器:
2 个隐藏 -> 3 个隐藏 -> 4 个特征'

由于一层的偏差是下一层中的节点数量,因此它们不对称。

在上面的例子中,偏差为 3,2,3,4

然而,由于编码器和解码器是对称的,但相反,有 2 个大小相同的偏差,即 3。

问题 1:
我是否将这些相似大小的偏差联系起来?

问题2:
如果问题1的答案是否定的,或者不能打结,那么我不打结的那些不对称变量,它们只是自变量吗?

neural-network autoencoder

6
推荐指数
0
解决办法
950
查看次数

wait queue.put(item) 到 asyncio.Queue 上似乎没有释放事件循环的控制

在这个简单的生产者/消费者示例中,就好像await queue.put(item)不释放事件循环以允许消费者运行直到完成。这会导致生产者将其所有项目放入队列中,然后消费者才能将其取出。

这是预期的吗?

await queue.put(item)如果我遵循with ,我就会得到我正在寻找的结果await asyncio.sleep(0)

然后,生产者将 1 个项目放入队列中,然后消费者从队列中取出 1 个项目。

我在 Python 3.6.8 和 3.7.2 中得到相同的结果。

import asyncio

async def produce(queue, n):
    for x in range(1, n + 1):
        print('producing {}/{}'.format(x, n))
        item = str(x)
        await queue.put(item)
        # await asyncio.sleep(0)
    await queue.put(None)

async def consume(queue):
    while True:
        item = await queue.get()
        if item is None:
            break
        print('consuming item {}...'.format(item))

loop = asyncio.get_event_loop()
queue = asyncio.Queue(loop=loop)
producer_coro = produce(queue, 10)
consumer_coro = consume(queue)
loop.run_until_complete(asyncio.gather(producer_coro, …
Run Code Online (Sandbox Code Playgroud)

python queue async-await python-asyncio

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

如何从tf.report_uninitialized_variables获取未初始化的变量列表

文档说它是1 d张量,但是,我没有弄清楚如何访问列表.

我更喜欢实际的变量而不是名称,因为我想通过它来初始化它们 tf.variables_initializer()

tensorflow

0
推荐指数
1
解决办法
3946
查看次数