我一直在寻找自动编码器,并一直在想是否使用绑定的重量.我打算将它们作为预训练步骤进行堆叠,然后使用它们的隐藏表示来提供NN.
使用解开的权重,它看起来像:
F(X)=σ 2(b 2 + w ^ 2*σ 1(b 1 + w ^ 1*X))
使用绑定的权重,它看起来像:
F(X)=σ 2(b 2 + w ^ 1 Ť*σ 1(b 1 + w ^ 1*X))
从一个非常简单的观点来看,可以说,绑定权重确保编码器部分在给定体系结构的情况下生成最佳表示,如果权重是独立的,那么解码器可以有效地采用非最优表示并仍然对其进行解码?
我问,因为如果解码器出现"魔术"并且我打算只使用编码器来驱动我的NN,那不会有问题.
我了解如何在自动编码器/解码器中绑定权重,即在解码器中使用编码器权重的转置。然而,目前尚不清楚如何处理这些偏见。
如果举例来说,
编码器:
4 个特征 -> 3 个隐藏 -> 2 个隐藏
解码器:
2 个隐藏 -> 3 个隐藏 -> 4 个特征'
由于一层的偏差是下一层中的节点数量,因此它们不对称。
在上面的例子中,偏差为 3,2,3,4
然而,由于编码器和解码器是对称的,但相反,有 2 个大小相同的偏差,即 3。
问题 1:
我是否将这些相似大小的偏差联系起来?
问题2:
如果问题1的答案是否定的,或者不能打结,那么我不打结的那些不对称变量,它们只是自变量吗?
在这个简单的生产者/消费者示例中,就好像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) 文档说它是1 d张量,但是,我没有弄清楚如何访问列表.
我更喜欢实际的变量而不是名称,因为我想通过它来初始化它们 tf.variables_initializer()