【发布时间】:2020-04-26 11:23:05
【问题描述】:
我正在尝试在 TensorFlow 网站上关注 this example,但它不起作用。
这是我的代码:
import tensorflow as tf
def vectorize(vector_like):
return tf.convert_to_tensor(vector_like)
def batchify(vector):
'''Make a batch out of a single example'''
return vectorize([vector])
data = [(batchify([0]), batchify([0, 0, 0])), (batchify([1]), batchify([0, 0, 0])), (batchify([2]), batchify([0, 0, 0]))]
num_hidden = 5
num_classes = 3
opt = tf.keras.optimizers.SGD(learning_rate=0.1)
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(num_hidden, activation='relu'))
model.add(tf.keras.layers.Dense(num_classes, activation='sigmoid'))
loss_fn = lambda: tf.keras.backend.cast(tf.keras.losses.mse(model(input), output), tf.float32)
var_list_fn = lambda: model.trainable_weights
for input, output in data:
opt.minimize(loss_fn, var_list_fn)
有一段时间,我收到有关损失函数具有错误数据类型(int 而不是 float)的警告,这就是我将强制转换添加到损失函数的原因。
我得到的不是网络训练,而是错误:
ValueError:没有为任何变量提供渐变: ['sequential/dense/kernel:0', 'sequential/dense/bias:0', 'sequential/dense_1/kernel:0', 'sequential/dense_1/bias:0'].
为什么没有通过渐变?我做错了什么?
【问题讨论】:
标签: python tensorflow tensorflow2.0 tf.keras