python - 我可以获得指向 tensorflow 中张量部分的指针吗?

标签 python machine-learning tensorflow

假设在 tensorflow 中,我创建了一个变量

C = tf.Variable(tf.random_uniform([n_sample, n_sample], -1, 1), name='C'),

现在我想获取指向变量第一列的指针,我可以这样做吗? tf.slice(C, [0,0], [n_sample,1]) 会给我我想要的东西,或者它只会创建另一个变量,其值存储在 C 中.

我想要这样做的原因是因为我的优化函数依赖于 C 和 C 的每一列。

最佳答案

据我所知,您无法真正访问数据本身(即像指针一样)。原因是代码与数据无关,因此它可以将数据传递到不同的 CPU 或 GPU,而无需您担心该部分(或者您可以指定要使用的设备,但这会变得很麻烦)。

所以 tf.slice 将是正确使用的函数。

你可以这样做:

for i in range(n_sample):
    curr_slice = tf.slice(C, [i,0], [n_sample,1])
    do_something(curr_slice)

这不是最有效的版本,但这是您在评论中要求的。

for i inVectorized range(n_sample):approach
curr_sliceloss = tf.slice(C, [i,0], [n_sample,1])
y.assign_add( tf.nn.l2_loss(tf.sub(curr_slice,X - tf.matmul(X,curr_slice)C)) + lambdalamb * tf.nn.l2_loss(curr_slice) C)

loss=tf.reduce_sum(y)

矢量化方法更清晰:

loss = tf.nn.l2_loss(X - tf.matmul(X,C)) + lamb * tf.nn.l2_loss(C)

train_step = tf.train.GradientDescentOptimizer(0.01).minimize(loss)
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)       
sess.run(train_step)

您可能需要通过创建占位符来初始化某些值。 另外,我在 skflow 中还找不到它,但在 scikit learn 中它是一个简单的 3 衬垫。

from sklearn.linear_model import Ridge
clf = Ridge(alpha=1.0)
clf.fit(X, W)

关于python - 我可以获得指向 tensorflow 中张量部分的指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38377699/

相关文章:

c# - ML.NET 图像分类迁移学习可以从保存的模型 .zip 文件或检查点恢复吗?如何?

python - python解析txt文件中出现的单词

tensorflow - protoc 看不到文件? (我做错了什么)

python - Geoplot 不会绘制 geopandas 对象

python - 在 TensorFlow 中获取一个简单的 MLP 来对 XOR 进行建模

python - scikits学习和nltk : Naive Bayes classifier performance highly different

python - 使用 conda 安装适用于 OS X 的 pytorch 的问题

python - tensorflow 线性回归误差爆炸

python - 如何处理来自 binance websocket 的多流数据?

python - Pandas 数据框数据透视表和分组