【发布时间】:2018-07-02 19:01:51
【问题描述】:
我在将 numpy.float32() 值打印到标准输出时遇到了一些问题。 代码如下:
import numpy as np
import tensorflow as tf
n_samples = 1000
batch_size = 100
num_steps = 20000
x_data = np.random.uniform(1, 10, (n_samples, 1))
y_data = 2 * x_data + 1 + np.random.normal(0, 2, (n_samples, 1))
x = tf.placeholder(tf.float32, shape=(batch_size, 1))
y = tf.placeholder(tf.float32, shape=(batch_size, 1))
with tf.variable_scope('linear-regression'):
k = tf.Variable(tf.random_normal((1, 1)), name='slope')
b = tf.Variable(tf.zeros(1,), name='bias')
y_pred = tf.matmul(x, k) + b
loss = tf.reduce_sum((y - y_pred) ** 2)
optimizer = tf.train.GradientDescentOptimizer(0.05).minimize(loss)
display_step = 5000
with tf.Session() as session:
session.run(tf.global_variables_initializer())
for i in range(num_steps):
indices = np.random.choice(n_samples, batch_size)
x_batch, y_batch = x_data[indices], y_data[indices]
_, loss_val, k_val, b_val = session.run((optimizer, loss, k, b), feed_dict={x: x_batch, y: y_batch})
if (i + 1) % display_step == 0:
print(f'Epoch {i+1}: loss = {loss_val.item():.3f}, k = {np.sum(k_val).item():.3f}, b = {np.sum(b_val).item():.3f}')
当我尝试在最后一个字符串中打印值时,我得到如下信息:
Epoch 5000: loss = nan, k = nan, b = nan
Epoch 10000: loss = nan, k = nan, b = nan
Epoch 15000: loss = nan, k = nan, b = nan
我正在使用可视代码 (Windows 10)。在调试模式下,我正在尝试打印 loss_val 值并将其转换为 Python 本机浮点值并在此之后打印,但得到 None 值。
感谢您的帮助 =)
附: TensorFlow 1.4.0、NumPy 1.14、Windows 10、Visual Code as IDE。
更新:
在 if-statment 中停止的调试模式下,我已经尝试过
print(1)
然后得到:
None
1
我做错了什么?看起来像是重新定义了 print()。
【问题讨论】:
标签: python windows numpy tensorflow nan