我正在尝试使用Tensorflow.这是一个非常简单的代码.
train = tf.placeholder(tf.float32, [1], name="train")
W1 = tf.Variable(tf.truncated_normal([1], stddev=0.1), name="W1")
loss = tf.pow(tf.sub(train, W1), 2)
step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
Run Code Online (Sandbox Code Playgroud)
只需忽略优化部分(第4行).它将采用浮点数并训练W1以增加平方差.
我的问题很简单.如果我只使用减号代替tf.sub"如下所示,有什么不同?会导致错误的结果吗?
loss = tf.pow(train-W1, 2)
Run Code Online (Sandbox Code Playgroud)
当我更换它时,结果看起来一样.如果它们是相同的,为什么我们需要使用"tf.add/tf.sub"的东西呢?
内置的反向传播计算只能通过"tf.*"来完成吗?
我在一个名为的docker镜像中有一定的Python设置deep.我曾经运行python代码
docker run --rm -it -v "$PWD":/app -w /app deep python some-code.py
Run Code Online (Sandbox Code Playgroud)
有关信息,-v并-w选择在当前路径容器链接本地文件.
但是,我不能用matplotlib.pyplot.让我们说test.py是
import matplotlib.pyplot as plt
plt.plot([1,2], [3,4])
plt.show()
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 3147, in plot
ax = gca()
File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 928, in gca
return gcf().gca(**kwargs)
File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 578, in gcf
return figure()
File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 527, in figure
**kwargs)
File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_tkagg.py", line 84, in …Run Code Online (Sandbox Code Playgroud) 我试图在层的部分连接的最后维度方面收集张量的切片.因为输出张量的形状是[batch_size, h, w, depth],我想根据最后一个维度选择切片,例如
# L is intermediate tensor
partL = L[:, :, :, [0,2,3,8]]
Run Code Online (Sandbox Code Playgroud)
但是,tf.gather(L, [0, 2,3,8])似乎只适用于第一个维度(对吧?)任何人都可以告诉我该怎么做?
我认为这个问题可能听起来很奇怪.比方说,有一个张量a.
x = tf.placeholder(tf.float32, [None, 2400], name="x")
y = tf.placeholder(tf.float32, [None, 2400], name="y")
a = tf.add(x, y, name="a")
Run Code Online (Sandbox Code Playgroud)
是否有一种有效的方式来引用a不同的名称,比如out?我在想像一个虚拟的操作
b = tf.add(a, 0, name="out")
Run Code Online (Sandbox Code Playgroud)
我问这个是因为我正在尝试不同的网络架构,而且无论架构如何,我都希望以一致的名称访问输出张量
tf.get_default_graph().get_tensor_by_name("out:0")`
Run Code Online (Sandbox Code Playgroud)
目前,输出张量取决于fc1/fc1wb:0或等的架构fc2/fc2wb:0.如何用特定名称包装最终操作?
我在ssh服务器上远程运行tensorflow代码.(例如,ssh -X account@server.address)
它说,在远程服务器上You can navigate to http://0.0.0.0:6006.
在这种情况下,我该如何检查张量板?如何浏览远程计算机的地址?我试图搜索,但似乎没有有用的信息.
让我们说,A并且B是相同大小的矩阵.在Matlab,我可以使用如下的简单索引.
idx = A>0;
B(idx) = 0
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做OpenCV?我应该使用
for (i=0; ... rows)
for(j=0; ... cols)
if (A.at<double>(i,j)>0) B.at<double>(i,j) = 0;
Run Code Online (Sandbox Code Playgroud)
这样的事情?是否有更好(更快,更有效)的方式?
而且,在OpenCV我尝试的时候
Mat idx = A>0;
Run Code Online (Sandbox Code Playgroud)
变量idx似乎是一个CV_8U矩阵(不是布尔而是整数).
我正在尝试实现一种使用 L2 池化的 CNN 架构。参考论文特别指出L2池化比最大池化更好,所以我想在激活函数之后尝试L2池化。
然而,Tensorflow似乎只提供tf.nn.avg_pool// 。tf.nn.max_poolingtf.nn.max_pool_with_argmax
有没有办法在 Tensorflow 中实现 L2 池化?
conv = tf.....
h = tf.nn.tanh(conv)
p = tf.pow(tf.nn.ave_pool(tf.pow(h,2)), 0.5)
Run Code Online (Sandbox Code Playgroud)
这会等价吗?这在反向传播方面效果好吗?
我正在尝试实现层之间的部分连接。比方说,我只想使用一些特征图,例如,第一个和第三个。
代码:
# let say, L1 is layer1 output of shape [batch_size x image_size x image_size x depth1]
partL1 = L1[:, :, :, [0,2]]
# W2 is a tf variable of shape [5, 5, 2, depth2]
conv2 = tf.nn.conv2d(partL1, W2)
Run Code Online (Sandbox Code Playgroud) 我想对 Tensorflow 中张量的每个元素应用一维插值。
例如,如果它是一个矩阵,我们可以使用interp1d.
from scipy.interpolate import interp1d
q = np.array([[2, 3], [5, 6]]) # query
x = [1, 3, 5, 7, 9] # profile x
y = [3, 4, 5, 6, 7] # profile y
fn = interp1d(x, y)
# fn(q) == [[ 3.5, 4.], [5., 5.5]]
Run Code Online (Sandbox Code Playgroud)
如果我们有一个张量q,
q = tf.placeholder(shape=[2,2], dtype=tf.float32)
Run Code Online (Sandbox Code Playgroud)
我怎样才能有等效的逐元素一维插值?有人可以帮忙吗?
任何人都可以验证/回答我的理解/问题吗?
在OpenCV中,假设
Mat A; // Suppose A has some values in it
Mat B=A;
Run Code Online (Sandbox Code Playgroud)
假设一个函数"void a_function(Mat argument){..//change argument ..}".
在你打电话给"a_function(A)"之后,A也会受到影响,对吧?
那么,为什么(或者在哪种情况下)我们需要"void a_function(Mat&argument)",如果它已经通过引用调用了?&这里可以有特殊意义吗?
如果你不希望A受到函数调用的影响,哪一个更好习惯?
a_function(A.clone())?a_function(A)并声明函数使用const Mat &argument并将责任留给函数?假设您需要计算像行一样的跨行产品
L.row(i) = A.row(i).cross(B.row(i));
Run Code Online (Sandbox Code Playgroud)
cross函数)将很快消失(?)(当退出当前本地范围时),对吧?我用TFRecord输入管道训练了一个网络.换句话说,没有占位符.简单的例子是:
input, truth = _get_next_batch() # TFRecord. `input` is not a tf.placeholder
net = Model(input)
net.set_loss(truth)
optimizer = tf...(net.loss)
Run Code Online (Sandbox Code Playgroud)
比方说,我获得了三个文件,ckpt-20000.meta,ckpt-20000.data-0000-of-0001,ckpt-20000.index.我明白了,以后可以使用该.meta文件导入元图并访问张量,例如:
new_saver = tf.train.import_meta_graph('ckpt-20000.meta')
new_saver.restore(sess, 'ckpt-20000')
logits = tf.get_collection("logits")[0]
Run Code Online (Sandbox Code Playgroud)
但是,元图在管道中从一开始就没有占位符.有没有办法可以使用元图和输入的查询推断?
有关信息,在查询应用程序(或脚本)中,我曾经使用占位符和恢复的模型权重定义模型(参见下文).我想知道我是否可以在没有重新定义的情况下使用元图,因为它会更加简单.
input = tf.placeholder(...)
net = Model(input)
tf.restore(sess, 'ckpt-2000')
lgt = sess.run(net.logits, feed_dict = {input:img})
Run Code Online (Sandbox Code Playgroud) python ×8
tensorflow ×8
c++ ×2
opencv ×2
docker ×1
matlab ×1
matplotlib ×1
matrix ×1
tensorboard ×1