我想知道的区别make_initializable_iterator和make_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) 我想加载一个预训练模型并继续使用该模型进行训练。
保存模型的标准代码片段 ( 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) 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)
sess.run()?如果是这样,在这个程序中,是否意味着更新权重和偏差1000倍?我正在尝试使用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)
谢谢.
我想使用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) 我试图在我的 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)
谢谢。
我想使用数组作为函数的参数,该函数将用于解决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) 我发现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 …
我有一堆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)
现在我知道它为什么会发生,但我仍然不知道如何解决这个问题.
我在java中的多线程环境中读过这个问题的
静态方法行为.
但是这个问题没有回答可以在多核处理器环境中在同一给定时间运行相同方法的多线程.
如果我的标题问题是"是",我的计算机究竟是如何实现的呢?因为只有一个静态方法等待调用.
两个核心分别将静态方法复制到它们的核心ram并分别同时运行它们吗?
我不知道我是否清楚表达了我的观点.如果没有,我非常愿意解释它.谢谢.