2017-06-26 32 views
0

所以我試圖讓使用MultivariateNormalDiag給出畝和形狀的西格瑪形狀(無,output_dim,output_dim,output_dim)的Tensorflow MultivariateNormalDiag張量(無,3)

多元高斯我想提供的張量形狀的兩個張量(無,3)對μ和sigma參數,像這樣

dist = tf.contrib.distributions.MultivariateNormalDiag(mu, sigma) 

,這樣我可以然後提供一組點,在這種情況下

dim_range = [float(i) for i in range(0, max_size)] 
points = [[a,b,c] for a in dim_range for b in dim_range for c in dim_range] 

並檢索一組密度正態分佈在mu周圍的點,如

gauss_tensor = tf.reshape(
    dist.pdf(points), 
    shape=(None, output_dim, output_dim, output_dim) 
) 

對於單個示例,例如, mu和sigma具有形狀(3)和輸出形狀(output_dim,output_dim,output_dim),並且如果可視化三維地,我們得到 this visualization

爲output_dim = 16和mu和sigma以半隨機的方式來選擇顯示每個維度的差異。一個完整的工作示例可以發現here和我想要實現的一個示例here [編輯:for 1.0起,dist.pdf(點數)需要更改爲dist.prob(點數)]

但是如果對一批未知大小嚐試使用相同的輸出(None,output_dim,output_dim,output_dim),那麼在解決問題時採用不同的方法,所有內容都會隨着不一致的錯誤消息而崩潰。

有沒有人知道如何做到這一點不同的批量大小,其中每個批次元素在一批mus和一批sigma中有相應的mu和sigma?

在此先感謝:)

p.s.這是使用tensorflow 0.12,但如果有修復1. *我會考慮重建tensorflow

回答

0

作爲朋友指出,MultivariateNormalDiag的功能是不同的1.2。升級Tensorflow並重新排列某些事物對問題進行排序。

mu_placeholder = tf.placeholder(
    dtype=tf.float32, 
    shape=(None, None, 3), 
    name='mu-tensor') 

[編輯:用於畝/西格瑪(無,1,3)也給出正確的結果]

mu_placeholder = tf.placeholder(
    dtype=tf.float32, 
    shape=(None, 1, 3), 
    name='mu-tensor') 

工作示例是here

+0

要完成的答案,[在此](https://github.com/tensorflow/tensorflow/issues/10766)是一個已經討論和修復的相關錯誤報告 –

相關問題