我正在尝试使用tensorflow实现RBM,这里是代码:
rbm.py
""" An rbm implementation for TensorFlow, based closely on the one in Theano """
import tensorflow as tf
import math
def sample_prob(probs):
return tf.nn.relu(
tf.sign(
probs - tf.random_uniform(probs.get_shape())))
class RBM(object):
def __init__(self, name, input_size, output_size):
with tf.name_scope("rbm_" + name):
self.weights = tf.Variable(
tf.truncated_normal([input_size, output_size],
stddev=1.0 / math.sqrt(float(input_size))), name="weights")
self.v_bias = tf.Variable(tf.zeros([input_size]), name="v_bias")
self.h_bias = tf.Variable(tf.zeros([output_size]), name="h_bias")
def propup(self, visible):
return tf.nn.sigmoid(tf.matmul(visible, self.weights) + self.h_bias)
def propdown(self, hidden):
return tf.nn.sigmoid(tf.matmul(hidden, tf.transpose(self.weights)) + self.v_bias)
def sample_h_given_v(self, v_sample):
return sample_prob(self.propup(v_sample))
def …Run Code Online (Sandbox Code Playgroud) 我可以通过ssh访问n个集群的GPU.Tensorflow自动给它们命名为gpu:0,...,gpu:(n-1).
其他人也可以访问,有时他们会随机访问gpus.我没有任何tf.device()明确的说明,因为这很麻烦,即使我选择了gpu编号j,并且有人已经在gpu编号j上会有问题.
我想通过gpus使用,找到第一个未使用的,只使用这个.我猜有人可以nvidia-smi用bash 解析输出并获得变量i并将该变量i作为要使用的gpu的数量提供给tensorflow脚本.
我从未见过这样的例子.我想这是一个非常普遍的问题.最简单的方法是什么?是一个纯粹的张量流可用吗?
我知道堆栈和github等上有无数关于如何在Tensorflow中恢复训练模型的问题.我已阅读大部分(1,2,3).
我有几乎完全相同的问题3然而我想尽可能以不同的方式解决它,因为我的训练和我的测试需要在从shell调用的单独脚本中,我不想添加完全相同的行我用于在测试脚本中定义图形,因此我不能使用tensorflow FLAGS和其他基于手动重新运行图形的答案.
我也不想sess.run每个变量并手动映射它们,因为它解释为我的图表非常大(使用带有参数input_map的import_graph_def).
所以我运行一些图表并在特定的脚本中训练它.比如(但没有培训部分)
#Script 1
import tensorflow as tf
import cPickle as pickle
x=tf.Variable(42)
saver=tf.train.Saver()
sess=tf.Session()
#Saving the graph
graph_def=sess.graph_def
with open('graph.pkl','wb') as output:
pickle.dump(graph_def,output,HIGHEST_PROTOCOL)
#Training the model
sess.run(tf.initialize_all_variables())
#Saving the variables
saver.save(sess,"pretrained_model.ckpt")
Run Code Online (Sandbox Code Playgroud)
我现在已经保存了图形和变量,所以我应该能够从另一个脚本运行我的测试模型,即使我的图形中有额外的训练节点.
#Script 2
import tensorflow as tf
import cPickle as pickle
sess=tf.Session()
with open('graph.pkl','rb') as input:
graph_def=pickle.load(input)
tf.import_graph_def(graph_def,name='persisted')
Run Code Online (Sandbox Code Playgroud)
然后显然我想使用保护程序恢复变量,但我遇到了与3相同的问题,因为没有找到保存甚至创建保护程序的变量.所以我写不出来:
saver=tf.train.Saver()
saver.restore(sess,"pretrained_model.ckpt")
Run Code Online (Sandbox Code Playgroud)
有没有办法绕过这些限制,我认为通过导入图形它会恢复每个节点中未初始化的变量,但似乎不是我真的需要第二次重新运行它像大多数给出的答案?
是否有一种相对简单的方法可以从没有 CAFFE(也没有 pyCaffe)的Caffe Zoo 中的众多预训练模型之一中提取 Python 中的权重?即解析.caffemodel为 hdf5/numpy 或 Python 可以读取的任何格式?
我找到的所有答案都使用带有 caffe 类或 Pycaffe 的 C++ 代码。我看过pycaffe的代码,看起来你真的需要caffe来理解二进制文件是唯一的解决方案吗?
使用我对如何从公共 Google 驱动器下载文件的问题的回答,我过去设法使用 Python 脚本中的 ID 下载图像,并使用以下代码块从公共驱动器中下载 Google API v3:
from google_auth_oauthlib.flow import Flow, InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload, MediaIoBaseDownload
from google.auth.transport.requests import Request
import io
import re
SCOPES = ['https://www.googleapis.com/auth/drive']
CLIENT_SECRET_FILE = "myjson.json"
authorized_port = 6006 # authorize URI redirect on the console
flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE, SCOPES)
cred = flow.run_local_server(port=authorized_port)
drive_service = build("drive", "v3", credentials=cred)
regex = "(?<=https://drive.google.com/file/d/)[a-zA-Z0-9]+"
for i, l in enumerate(links_to_download):
url = l
file_id = re.search(regex, url)[0]
request = drive_service.files().get_media(fileId=file_id) …Run Code Online (Sandbox Code Playgroud) python google-drive-api google-oauth pydrive google-developers-console
我使用不同的绘图解决方案制作了一个Shiny应用程序来渲染ggplot2Shiny(我最喜欢的人plotly)的图形.
我喜欢用户可以与图形交互的事实:plotly用户可以放大图形或点击点(在散点图上示例)并访问它们的值.
我想将我的散点图上的每个点链接到一个URL(不显示它),并允许用户点击一个点,这将触发激活打开新网页的超链接.
如果我可以用plotly这样做,那将是惊人的,但我愿意接受任何其他种类的技术(ggvis,dygraph,等).
我正在尝试使用张量流来训练具有正则化的多元线性回归模型.出于某种原因,我无法获得以下代码的训练片段来计算我想用于梯度下降更新的错误.我在设置图表时做错了吗?
def normalize_data(matrix):
averages = np.average(matrix,0)
mins = np.min(matrix,0)
maxes = np.max(matrix,0)
ranges = maxes - mins
return ((matrix - averages)/ranges)
def run_regression(X, Y, X_test, Y_test, lambda_value = 0.1, normalize=False, batch_size=10):
x_train = normalize_data(X) if normalize else X
y_train = Y
x_test = X_test
y_test = Y_test
session = tf.Session()
# Calculate number of features for X and Y
x_features_length = len(X[0])
y_features_length = len(Y[0])
# Build Tensorflow graph parts
x = tf.placeholder('float', [None, x_features_length], name="X")
y = tf.placeholder('float', [None, …Run Code Online (Sandbox Code Playgroud) Tensorflow具有大量的变换,可以应用于表示图像([高度,宽度,深度])的3D张量,例如tf.image.rot90()或者tf.image.random_flip_left_right().
我知道它们意味着与队列一起使用,因此它们只能在一个图像上运行.
但是有没有办法对ops进行矢量化以将4D张量([batch_size,height,width,depth])转换为相同尺寸张量,并且沿着第一维应用图像,而不用明确地循环它们tf.while_loop()?
(编辑:关于rot90()从numpy rot90采取的聪明的黑客将是:
rot90=tf.reverse(x,tf.convert_to_tensor((False,False,True,False)))
rot90=tf.transpose(rot90,([0,2,1,3])
Run Code Online (Sandbox Code Playgroud)
编辑2:事实证明这个问题已经被回答了很多次(一个例子),map_fn如果你想要一个优化的版本,它似乎是要走的路.我已经看过了,但我已经忘记了.我想这会让这个问题重复......
然而,对于随机op或更复杂的op,有一个通用方法来矢量化现有函数会很好...)
我已经开始学习TikZ来制作数字但是我仍然只限于非常简单的图画(线条,文本等).我需要构建的几乎所有图形都会重新组合3D矩形块,有时会在其上书写或像此图像中的箭头:
,(我从https://arxiv.org/abs/1707.02921获取)
它读得很好.我想知道是否有模块化的构建块允许绘制这种类型的数字?或者,如果事先需要对TikZ非常称职,并且没有捷径可用.(如果得到很好的辩护,我对TikZ以外的其他选择开放)
编辑:正如我所说,我正在寻找TikZ中的模块化块和示例语法来创建堆叠的3D块,而不是一个完美的代码,允许精确构建附图(尽管它会令人难以置信).
我试图将一个具有完全紧密的已知蒙版的对象粘贴到图像上,因此它应该很容易,但是如果没有一些后期处理,我会在边界处得到人工制品。我想使用混合技术泊松混合来减少伪影。它是在 opencv 中实现的seamlessClone。
import cv2
import matplotlib.pyplot as plt
#user provided tight mask array tight_mask of dtype uint8 with only white pixel the ones on the object the others are black (50x50x3)
tight_mask
#object obj to paste a 50x50x3 uint8 in color
obj
#User provided image im which is large 512x512 of a mostly uniform background in colors
im
#two different modes of poisson blending, which give approximately the same result
normal_clone=cv2.seamlessClone(obj, im, mask, …Run Code Online (Sandbox Code Playgroud)