我想以yp成对的方式比较我的神经网络中的预测值,所以我正在使用(回到我原来的numpy实现中):
idx = np.repeat(np.arange(len(yp)), len(yp))
jdx = np.tile(np.arange(len(yp)), len(yp))
s = yp[[idx]] - yp[[jdx]]
Run Code Online (Sandbox Code Playgroud)
这基本上创建了一个索引网格,然后我使用它.idx=[0,0,0,1,1,1,...]而jdx=[0,1,2,0,1,2...].我不知道是否有更简单的做法...
无论如何,TensorFlow有一个tf.tile(),但似乎缺乏一个tf.repeat().
idx = np.repeat(np.arange(n), n)
v2 = v[idx]
Run Code Online (Sandbox Code Playgroud)
我收到错误:
TypeError: Bad slice index [ 0 0 0 ..., 215 215 215] of type <type 'numpy.ndarray'>
Run Code Online (Sandbox Code Playgroud)
使用TensorFlow常量进行索引也无效:
idx = tf.constant(np.repeat(np.arange(n), n))
v2 = v[idx]
Run Code Online (Sandbox Code Playgroud)
-
TypeError: Bad slice index Tensor("Const:0", shape=TensorShape([Dimension(46656)]), dtype=int64) of type <class 'tensorflow.python.framework.ops.Tensor'>
Run Code Online (Sandbox Code Playgroud)
我的想法是将我的RankNet实现转换为TensorFlow.
我试图使这个MNIST示例适应二进制分类.
但是当我将NLABELSfrom NLABELS=2改为时NLABELS=1,loss函数总是返回0(精度为1).
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
# Import data
mnist = input_data.read_data_sets('data', one_hot=True)
NLABELS = 2
sess = tf.InteractiveSession()
# Create the model
x = tf.placeholder(tf.float32, [None, 784], name='x-input')
W = tf.Variable(tf.zeros([784, NLABELS]), name='weights')
b = tf.Variable(tf.zeros([NLABELS], name='bias'))
y = tf.nn.softmax(tf.matmul(x, W) + b)
# Add summary ops to collect data
_ = tf.histogram_summary('weights', W)
_ …Run Code Online (Sandbox Code Playgroud) 为什么C程序员经常以2的幂分配字符串(char数组)?
你经常看到......
char str[128]
char str[512]
char str[2048]
Run Code Online (Sandbox Code Playgroud)
不太常见,你看...
char str[100]
char str[500]
char str[2000]
Run Code Online (Sandbox Code Playgroud)
这是为什么?
我理解答案将涉及以二进制方式处理的内存......但为什么我们不经常看到char str[384],这是128 + 256(两个的倍数).
为什么没有使用两个的倍数?为什么C程序员使用两个幂?
在我工作的地方,我们进行了大量的数值计算,我们正在考虑购买使用NVIDIA视频卡的工作站,因为CUDA(与TensorFlow和Theano合作).
我的问题是:这些计算机是否应该配备另一个视频卡来处理显示器并为GPGPU释放NVIDIA?
如果有人知道有关使用视频卡进行显示和GPGPU的硬数据,我将不胜感激.
假设我想要对一些密集计算(不是I/O绑定)进行并行化.
当然,我不想运行比可用处理器更多的进程,或者我会开始支付上下文切换(和缓存未命中).
精神上,我希望随着我增加n中multiprocessing.Pool(n),总时间将这样的表现:
但实际上,我得到了这个:
#!/usr/bin/env python
from math import factorial
def pi(n):
t = 0
pi = 0
deno = 0
k = 0
for k in range(n):
t = ((-1)**k)*(factorial(6*k))*(13591409+545140134*k)
deno = factorial(3*k)*(factorial(k)**3)*(640320**(3*k))
pi += t/deno
pi = pi * 12/(640320**(1.5))
pi = 1/pi
return pi
import multiprocessing
import time
maxx = 20
tasks = 60
task_complexity = 500
x = range(1, maxx+1)
y = [0]*maxx
for i in x:
p = …Run Code Online (Sandbox Code Playgroud) 我可以在ggplot注释中使用标记吗?
比方说,我有这个图:
p <- function(i) 8*i
a <- function(i) 1+4*i*(i-1)
library(ggplot2)
library(reshape2)
i <- 1:(8*365/7)
d <- data.frame(i=i,p=p(i),a=sapply(i,a))
d <- melt(d, id.vars='i')
p <- ggplot(d, aes(i, value, linetype=variable)) +
geom_hline(yintercept=700^2) +
geom_line() +
scale_linetype_manual(values=c(2,1)) +
#geom_point() +
scale_x_continuous(breaks=(0:20)*365/7, labels=0:20) +
#scale_y_continuous(breaks=c(0,700^2), labels=c(0,expression(L^2)))
scale_y_sqrt() +
#scale_y_log10() +
annotate('text', 8*365/7, 1e3, label="P(i)=8i", hjust=1, size=3) +
annotate('text', 8*365/7, 2.5e5, label="A(i)=1+4i(i-1)", hjust=1, size=3)
print(p + theme_classic())
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用fontface = 3并将所有内容都放在斜体中.但我不希望数字用斜体,只有变量i.优选地,P并且A将不被以斜体为好.
有任何想法吗?
在TensorFlow或Theano中,您只需告诉库您的神经网络是如何运行的,以及前馈应该如何运作.
例如,在TensorFlow中,您会写:
with graph.as_default():
_X = tf.constant(X)
_y = tf.constant(y)
hidden = 20
w0 = tf.Variable(tf.truncated_normal([X.shape[1], hidden]))
b0 = tf.Variable(tf.truncated_normal([hidden]))
h = tf.nn.softmax(tf.matmul(_X, w0) + b0)
w1 = tf.Variable(tf.truncated_normal([hidden, 1]))
b1 = tf.Variable(tf.truncated_normal([1]))
yp = tf.nn.softmax(tf.matmul(h, w1) + b1)
loss = tf.reduce_mean(0.5*tf.square(yp - _y))
optimizer = tf.train.GradientDescentOptimizer(0.5).minimize(loss)
Run Code Online (Sandbox Code Playgroud)
我使用L2范数损失函数,C = 0.5*sum((y-yp)^ 2),并且在反向传播步骤中可能必须计算导数,dC = sum(y-yp).见本书(30).
我的问题是:TensorFlow(或Theano)如何知道反向传播的分析导数?或者他们做了近似?或者不知何故不使用衍生物?
我已经在TensorFlow上完成了深度学习的udacity课程,但我仍然对如何理解这些库的工作方式存在分歧.
我可以使用 \path 绘制一条穿过 2 条边的线吗?
考虑:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\tikzstyle{status} = [rectangle, draw=black, text centered, anchor=north, text=black, minimum width=2em, minimum height=2em, node distance=6ex and 7em, font=\bfseries]
\tikzstyle{line} = [draw,thick,-latex]
\tikzstyle{transition} = [font=\small]
\begin{document}
\begin{tikzpicture}
\node [status, fill=green] (T) {H};
\node [status, fill=red, right=4em of T] (A) {A};
\node [status, fill=gray, right=4em of A] (D) {D};
\path [line] (T) -- (A) node[transition,pos=0.5,above,align=left] {$\#A \geq 1$};
\path [line] (A) -- (D) node[transition,pos=0.5,above,align=left] {wait $\tau$ tick\\$\tau\sim\mathcal{G}(\lambda)$};
%\path [line] (D) -| (T) node[transition,pos=0.83,left] {$p_{repl}$}; …Run Code Online (Sandbox Code Playgroud) 我收到占位符错误.
我不知道它意味着什么,因为我正确映射sess.run(..., {_y: y, _X: X})...我在这里提供了一个功能齐全的MWE重现错误:
import tensorflow as tf
import numpy as np
def init_weights(shape):
return tf.Variable(tf.random_normal(shape, stddev=0.01))
class NeuralNet:
def __init__(self, hidden):
self.hidden = hidden
def __del__(self):
self.sess.close()
def fit(self, X, y):
_X = tf.placeholder('float', [None, None])
_y = tf.placeholder('float', [None, 1])
w0 = init_weights([X.shape[1], self.hidden])
b0 = tf.Variable(tf.zeros([self.hidden]))
w1 = init_weights([self.hidden, 1])
b1 = tf.Variable(tf.zeros([1]))
self.sess = tf.Session()
self.sess.run(tf.initialize_all_variables())
h = tf.nn.sigmoid(tf.matmul(_X, w0) + b0)
self.yp = tf.nn.sigmoid(tf.matmul(h, w1) + b1)
C = tf.reduce_mean(tf.square(self.yp - …Run Code Online (Sandbox Code Playgroud)