小编Sam*_*uel的帖子

Tensorflow:下载并运行预训练的 VGG 或 ResNet 模型

让我们从头开始。到目前为止,我自己已经在 Tensorflow 中创建和训练了小型网络。在训练期间,我保存模型并在我的目录中获取以下文件:

model.ckpt.meta
model.ckpt.index
model.ckpt.data-00000-of-00001
Run Code Online (Sandbox Code Playgroud)

稍后,我加载保存的模型network_dir以进行一些分类并提取模型的可训练变量。

saver = tf.train.import_meta_graph(network_dir + ".meta")
variables = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope="NETWORK")
Run Code Online (Sandbox Code Playgroud)

现在我想使用更大的预训练模型,如 VGG16 或 ResNet,并想使用我的代码来做到这一点。我想加载像我自己的网络一样的预训练模型,如上所示。

在这个网站上,我发现了很多预训练模型:

https://github.com/tensorflow/models/tree/master/research/slim#pre-trained-models

我下载了 VGG16 检查点并意识到这些只是经过训练的参数。

我想知道如何或在哪里可以获得这些预训练网络的保存模型或图形结构?例如,我如何使用没有model.ckpt.meta,model.ckpt.indexmodel.ckpt.data-00000-of-00001文件的 VGG16 检查点?

python tensorflow

5
推荐指数
1
解决办法
2486
查看次数

Tensorflow:从 TFRecords 文件中提取图像和标签

我有一个 TFRecords 文件,其中包含带有标签、名称、大小等的图像。我的目标是将标签和图像提取为一个 numpy 数组。

我执行以下操作来加载文件:

def extract_fn(data_record):
    features = {
        # Extract features using the keys set during creation
        "image/class/label":    tf.FixedLenFeature([], tf.int64),
        "image/encoded":        tf.VarLenFeature(tf.string),
    }
    sample = tf.parse_single_example(data_record, features)
    #sample = tf.cast(sample["image/encoded"], tf.float32)
    return sample

filename = "path\train-00-of-10"
dataset = tf.data.TFRecordDataset(filename)
dataset = dataset.map(extract_fn)
iterator = dataset.make_one_shot_iterator()
next_element = iterator.get_next()

with tf.Session() as sess:
    while True:
        data_record = sess.run(next_element)
        print(data_record)
Run Code Online (Sandbox Code Playgroud)

图像保存为字符串。如何将图像转换为float32? 我试过sample = tf.cast(sample["image/encoded"], tf.float32)哪个不起作用。我想data_record成为一个包含图像作为 numpy 数组和标签作为np.int32数字的列表。我怎样才能做到这一点?

现在data_record看起来像这样:

{'image/encoded': …
Run Code Online (Sandbox Code Playgroud)

python tensorflow tensorflow-datasets

5
推荐指数
1
解决办法
6543
查看次数

加速 Matplotlib

目前我正在制作实时绘图,但可视化速度非常慢。我想知道一般可以做哪些事情来加快 Matplotlib 中的速度:

  • 后端如何影响性能?是否有比其他后端更适合实时绘图的后端?
  • 我可以降低分辨率来提高 FPS 吗?
  • 如果减小窗口大小,为什么绘图的 FPS 会增加?为什么切换到全屏模式后 FPS 会急剧下降?

我还尝试关闭所有我不需要的东西:

ax.set_xticklabels(())
ax.set_yticklabels(())
ax.set_xticks([])
ax.set_yticks([])
ax.axis('off')
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)
Run Code Online (Sandbox Code Playgroud)

然而,效果可以忽略不计。还有更多我可以关闭的东西吗?

我还想知道是否可以关闭创建图表时打开的窗口的按钮(主页按钮等,见下文)。关闭这些按钮可以提高速度吗?

在此输入图像描述

我还发现执行以下操作

fig.canvas.draw_idle()
fig.canvas.start_event_loop(1e-9)
Run Code Online (Sandbox Code Playgroud)

更新情节比

fig.canvas.draw_idle()
self.fig.canvas.update()
self.fig.canvas.flush_events()
Run Code Online (Sandbox Code Playgroud)

是否有更好的方法来更新图中的对象?

python matplotlib

5
推荐指数
1
解决办法
1349
查看次数

Tensorflow:裁剪图像的最大中心正方形区域

我的网络拍摄100 x 100像素大小的图像。因此,我必须调整不同大小的数据集图像的大小。我希望能够从给定的图像中提取最大的中心正方形区域,然后将其大小调整为100 x 100.

更准确地说,假设图像具有200像素的宽度和像素的高度50。然后我想提取本例中最大的中心正方形区域,50 x 50然后将图像大小调整为100 x 100像素。

使用 Tensorflow 做到这一点的正确方法是什么?现在我正在使用tf.image.resize_images()它扭曲图像,我想摆脱它。

python image-processing tensorflow

4
推荐指数
1
解决办法
1871
查看次数

在 JAX 中高效计算 Hessian 矩阵

fun在 JAX 的快速入门教程中,我发现可以使用以下代码行有效地计算可微函数的 Hessian 矩阵:

from jax import jacfwd, jacrev

def hessian(fun):
  return jit(jacfwd(jacrev(fun)))
Run Code Online (Sandbox Code Playgroud)

然而,我们也可以通过计算以下公式来计算 Hessian 矩阵:

def hessian(fun):
  return jit(jacrev(jacfwd(fun)))

def hessian(fun):
  return jit(jacfwd(jacfwd(fun)))

def hessian(fun):
  return jit(jacrev(jacrev(fun)))
Run Code Online (Sandbox Code Playgroud)

这是一个最小的工作示例:

import jax.numpy as jnp
from jax import jit
from jax import jacfwd, jacrev

def comp_hessian():

    x = jnp.arange(1.0, 4.0)

    def sum_logistics(x):
        return jnp.sum(1.0 / (1.0 + jnp.exp(-x)))

    def hessian_1(fun):
        return jit(jacfwd(jacrev(fun)))

    def hessian_2(fun):
        return jit(jacrev(jacfwd(fun)))

    def hessian_3(fun):
        return jit(jacrev(jacrev(fun)))

    def hessian_4(fun):
        return jit(jacfwd(jacfwd(fun)))

    hessian_fn = hessian_1(sum_logistics)
    print(hessian_fn(x))

    hessian_fn = …
Run Code Online (Sandbox Code Playgroud)

jax

3
推荐指数
1
解决办法
2489
查看次数

Python:动画 3D 散点图变慢

我的程序绘制了文件中每个时间步的粒子位置。不幸的是,尽管我使用了,但它变得越来越慢matplotlib.animation。瓶颈在哪里?

我的两个粒子的数据文件如下所示:

#     x   y   z
# t1  1   2   4
#     4   1   3
# t2  4   0   4
#     3   2   9
# t3  ...
Run Code Online (Sandbox Code Playgroud)

我的脚本:

import numpy as np                          
import matplotlib.pyplot as plt            
from mpl_toolkits.mplot3d import Axes3D
import mpl_toolkits.mplot3d.axes3d as p3
import matplotlib.animation as animation

# Number of particles
numP = 2
# Dimensions
DIM = 3
timesteps = 2000

with open('//home//data.dat', 'r') as fp:
    particleData = []
    for line in fp:
        line = line.split() …
Run Code Online (Sandbox Code Playgroud)

python animation matplotlib scatter3d

2
推荐指数
1
解决办法
7317
查看次数

如何更新散点图动画

我尝试编写一个简单的脚本,它更新每个时间步的散点图t。我想做得尽可能简单。但它所做的只是打开一扇我什么也看不见的窗户。窗户就结冰了。这可能只是一个小错误,但我找不到它。

data.dat格式为

                x      y
Timestep 1      1      2
                3      1
Timestep 2      6      3
                2      1
Run Code Online (Sandbox Code Playgroud)

(该文件仅包含数字)

import numpy as np
import matplotlib.pyplot as plt
import time

# Load particle positioins
with open('//home//user//data.dat', 'r') as fp:
    particles = []
    for line in fp:
        line = line.split() 
        if line:
            line = [float(i) for i in line]
            particles.append(line)

T = 100
numbParticles = 2

x, y = np.array([]), np.array([])

plt.ion()
plt.figure()
plt.scatter(x,y)
for t in range(T):
    plt.clf()
    for …
Run Code Online (Sandbox Code Playgroud)

python matplotlib scatter-plot matplotlib-animation

1
推荐指数
1
解决办法
9324
查看次数

用现代C ++ STL数据结构替换旧的C样式数组

我为C ++中的n体仿真实现了一个简单的类。但是,该类使用了许多旧的C样式数组,我希望将其替换为STL提供的数据结构。

这是我要改进的代码的相关部分:

struct Particle{
    double m;           // mass
    double x[DIM];      // position
    double v[DIM];      // velocity
    double F[DIM];      // force 
};

class Nbody {
    private:
        const unsigned int n;           // number of particles
        const double dt;                // step size
        const double t_max;             // max simulation time
        std::vector<Particle> p;
    public:
        ~Nbody(){};
        Nbody(unsigned int n_, double dt_, double t_max_);
};

Nbody::Nbody(unsigned int n_, double dt_, double t_max_)
    : n{n_}, dt{dt_}, t_max{t_max_} {
    p = new std::vector<Particle> [n];
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用std::vector<Particle>。但是在这种情况下,如何 …

c++ initialization vector construct stdarray

1
推荐指数
1
解决办法
78
查看次数

在Python中输入for循环之前分配函数

在下面的示例代码中,我想ps x ps用零,一个或随机数替换大量图像中的大小的补丁.这是一个例子:

在此输入图像描述

为了保持for循环的清洁,快速和python脚本的简短,我想patch_fct在进入for循环之前定义一个函数,它完成了这项工作.不幸的是,功能np.zerosnp.ones在从这样的方式不同np.random.randnp.random.randn使得它们采取不同的参数来定义输出的大小.对于2x2矩阵,我执行以下操作以获得带有1的矩阵:

np.ones((2,2))
Run Code Online (Sandbox Code Playgroud)

而我呢

np.random.rand(2,2)
Run Code Online (Sandbox Code Playgroud)

如果我想要一个随机数矩阵.

这是一个完整的示例代码.如果我patch_fct((ps,ps))在for循环中使用它,它只适用于"ones"和"0".为了处理随机数,我必须将该行更改为patch_fct(ps,ps).

有没有办法做到这一点?

import numpy as np
import matplotlib.pyplot as plt

n_images = 100
w_size = 30

h_size = 30
patch_type = "ones"
ps = 4

images = -np.ones((n_images, h_size, w_size))
x0 = np.random.randint(0, w_size - ps, n_images)
y0 = np.random.randint(0, h_size - ps, n_images)

if patch_type == "zeros":
    patch_fct = np.zeros
elif patch_type == "ones":
    patch_fct …
Run Code Online (Sandbox Code Playgroud)

python numpy

-1
推荐指数
1
解决办法
60
查看次数