小编Lio*_*Lai的帖子

在make_initializable_iterator和make_one_shot_iterator之间的tensorflow数据集API差异

我想知道的区别make_initializable_iteratormake_one_shot_iterator.
1. Tensorflow文件说A "one-shot" iterator does not currently support re-initialization.这究竟是什么意思?
2.以下2个片段是否相同?
使用make_initializable_iterator

iterator = data_ds.make_initializable_iterator()
data_iter = iterator.get_next()
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for e in range(1, epoch+1):
    sess.run(iterator.initializer)
    while True:
        try:
            x_train, y_train = sess.run([data_iter])
            _, cost = sess.run([train_op, loss_op], feed_dict={X: x_train,
                                                               Y: y_train})
        except tf.errors.OutOfRangeError:   
            break
sess.close()
Run Code Online (Sandbox Code Playgroud)

使用 make_one_shot_iterator

iterator = data_ds.make_one_shot_iterator()
data_iter = iterator.get_next()
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for e in range(1, epoch+1):
    while True:
        try:
            x_train, y_train = sess.run([data_iter])
            _, …
Run Code Online (Sandbox Code Playgroud)

python dataset tensorflow

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

如何加载张量流模型并继续训练

我想加载一个预训练模型并继续使用该模型进行训练。
保存模型的标准代码片段 ( pretrain.py):

tf.reset_default_graph()

# tf Graph input
X = tf.placeholder("float", [None, n_input])
Y = tf.placeholder("float", [None, n_classes])

mlp_layer_name = ['h1', 'b1', 'h2', 'b2', 'h3', 'b3', 'w_o', 'b_o']
logits = multilayer_perceptron(X, n_input, n_classes, mlp_layer_name)

loss_op = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=Y), name='loss_op')
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)
train_op = optimizer.minimize(loss_op, name='train_op')

saver = tf.train.Saver()

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())

    # Training cycle
    for epoch in range(training_epochs):
        avg_cost = 0.

        # Loop over all batches
        for i in range(total_batch):
            batch_x, batch_y = next(train_generator)

            # …
Run Code Online (Sandbox Code Playgroud)

python tensorflow

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

Tensorflow何时更新权重和偏差?

tensorflow何时更新for循环中的权重和偏差?

下面是来自tf的github的代码.mnist_softmax.py

for _ in range(1000):
    batch_xs, batch_ys = mnist.train.next_batch(100)
    sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
Run Code Online (Sandbox Code Playgroud)
  1. 张量流何时更新权重和偏差?
  2. 它在运行时是否更新它们sess.run()?如果是这样,在这个程序中,是否意味着更新权重和偏差1000倍?
  3. 或者在完成整个for循环后更新它们?
  4. 如果2.是正确的,我的下一个问题是,每次都使用不同的训练数据来更新模型(因为它使用了next_batch(100).总共有1000*100个训练数据点.但是所有数据点只考虑一次我是否正确或是否误解了某些事情?
  5. 如果3.是正确的,那么在经过一次更新步骤后,模型是否经过训练是否很奇怪?我想我一定是在误解一些东西,如果有人能给我一些提示或者提一些材料,那真的很棒.

python tensorflow

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

使用keras加载模型并为其参数指定新值

我正在尝试使用keras来存储模型,然后将其加载到重新训练中.我的问题是如何在加载模型时将学习率设置为新值?
这是我的代码:

# Save a model
model = Sequential()
model.add(Dense(64, kernel_initializer='uniform', input_shape=(10,)))
model.add(Activation('tanh'))
model.add(Activation('softmax'))
# learning rate is 0.001
sgd = optimizers.SGD(lr=0.001, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_squared_error', optimizer=sgd)
model.fit_generator(...)
model.save()
Run Code Online (Sandbox Code Playgroud)

然后加载模型,

model = load_model(model)
# Change the model's parameters here. Set the learning rate to 0.01.
model.fit_generator(...)
Run Code Online (Sandbox Code Playgroud)

谢谢.

python keras

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

如何使用Dataset API读取变量长度列表的TFRecords文件?

我想使用Tensorflow的数据集API来读取变量长度列表的TFRecords文件.这是我的代码.

def _int64_feature(value):
    # value must be a numpy array.
    return tf.train.Feature(int64_list=tf.train.Int64List(value=value))
def main1():
    # Write an array to TFrecord.
    # a is an array which contains lists of variant length.
    a = np.array([[0, 54, 91, 153, 177],
                 [0, 50, 89, 147, 196],
                 [0, 38, 79, 157],
                 [0, 49, 89, 147, 177],
                 [0, 32, 73, 145]])

    writer = tf.python_io.TFRecordWriter('file')

    for i in range(a.shape[0]): # i = 0 ~ 4
        x_train = a[i]
        feature = {'i': _int64_feature(np.array([i])), 'data': _int64_feature(x_train)}

        # Create …
Run Code Online (Sandbox Code Playgroud)

python tensorflow tfrecord

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

在 mac 上升级 gnu make

我试图在我的 mac 上将 gnu make 版本升级到 4.1,但我无法成功安装。以下是我到目前为止所做的:
1. 安装 xcode v8.2.1
2. 使用以下命令手动升级 gnu make。

# Download gnu make-4.1.tar.gz from gnu website.
./configure
make 
sudo make install
Run Code Online (Sandbox Code Playgroud)

make当我make --version在终端上输入时,这不会使我的版本变为 v4.1 。
3.xcode-select --install命令行运行也没有解决问题。

我的系统信息:

$ sw_vers -productVersion
$ v10.12.4
$ cmake --version
$ v3.10.0
$ make --version
$ 3.81
Run Code Online (Sandbox Code Playgroud)

谢谢。

macos makefile macos-sierra

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

将numpy数组转换为迭代器

我想使用数组作为函数的参数,该函数将用于解决ODE函数。

def ode(x, t, read_tau, tau_arr):
  q_ib = x[0:4]
  omega = x[4:7]

  dq_ib = 0.5 * np.dot(gen_omega(omega), q_ib) + read_tau(tau_arr)

  return dq_ib

dq_ib = odeint(rhs, x0, t, args=(b_I, read_tau, tau_arr))
Run Code Online (Sandbox Code Playgroud)

tau_arr是一个(1000,3)数组。我能想到的唯一解决方案是,首先使tau_arr成为迭代器,并使其成为read_tau()。

def read_tau(tau_arr):
  return next(tau_arr)
Run Code Online (Sandbox Code Playgroud)

read_tau函数的返回值将是一个1x3数组,该数组将用于求解ODE。

我的问题是如何将二维数组转换为迭代器,并在使用next()调用迭代器时,它将逐行返回数组。

a = np.array([[1,2,3], [4,5,6]])
convert_to_iter(a)
next(a)
[1,2,3]
next[a]
[4,5,6]
Run Code Online (Sandbox Code Playgroud)

python arrays iterator numpy ode

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

Keras fit_generator 上的错误,比应有的步骤多运行了几步

我发现fit_generator()会比应有的多跑几步。
我设置steps_per_epoch=100。i 和 k 都从 0 开始。但是在训练过程结束时,它会打印出k = 109。这种情况仅在添加验证数据时发生。

def data_generate(xfd, yfd, x_line_offset, y_line_offset):

    while True:
        k = 0

        x_line_offset, y_line_offset = shuffle_list(x_line_offset, y_line_offset)

        for i in range(100):
            print('i = {}'.format(i))
            print('k = {}'.format(k))
            k += 1

            x_train = get_line_by_offset(xfd, x_line_offset[i])
            x_train = rescaling(x_train, 0, 65535, 0, 1)
            y_train = get_line_by_offset(yfd, y_line_offset[i])

            yield x_train, y_train

train_generator = data_generate(xfd_train, yfd_train, x_train_line_offset, y_train_line_offset)
validation_generator = data_generate(xfd_valid, yfd_valid, x_valid_line_offset, y_valid_line_offset)

model.fit_generator(train_generator, steps_per_epoch=100,
                    validation_data=validation_generator,
                    validation_steps=len(fix_y_valid_line_offset), epochs=1)
Run Code Online (Sandbox Code Playgroud)

由于它会打印出来k …

python yield generator keras

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

将64位浮点格式字符串转换为浮点数

我有一堆64位浮点格式字符串,我必须将它们转换为浮点数.我知道格式是什么样的,但我想知道是否有内置函数可以直接完成这项工作,如:

convertToFloat(C06FCA5E35000000) --> -254.324 
convertToFloat(405F7D70A4000000) --> +125.96
Run Code Online (Sandbox Code Playgroud)

我知道如何手动将这些位模式转换为数字,但它需要大量的位移.有没有更好的办法?

我将'C06FCA5E35000000'修改为'\ xC0\x6F\xCA\x5E\x35\x00\x00\x00',并将其存储到myString.

>>>print (myString)
\xC0\x6F\xCA\x5E\x35\x00\x00\x00
>>>d = struct.unpack('>d', myString)
       d = struct.unpack('>d', myString)
 struct.error: unpack requires a string argument of length 8
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

我没有使用binascii.a2b_hex或binascii.b2a_hex,因为它将'A'转换为'41'或'41'为'A'.两者都不是我想要的.对?

>>>print len('\xC0\x6F\xCA\x5E\x35\x00\x00\x00')
8
>>>print len(myString)
32
Run Code Online (Sandbox Code Playgroud)

现在我知道它为什么会发生,但我仍然不知道如何解决这个问题.

python

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

在多核处理器环境中,可以有多个线程在相同的给定时间运行相同的静态方法

在java中的多线程环境中读过这个问题的 静态方法行为.
但是这个问题没有回答可以在多核处理器环境中在同一给定时间运行相同方法的多线程. 如果我的标题问题是"是",我的计算机究竟是如何实现的呢?因为只有一个静态方法等待调用. 两个核心分别将静态方法复制到它们的核心ram并分别同时运行它们吗? 我不知道我是否清楚表达了我的观点.如果没有,我非常愿意解释它.谢谢.


java cpu multithreading multicore

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