tf.constant
tf.constant() 返回的 tensor 是一个常量,因为这个 tensor 的值不会变
tf.placeholder 和 feed_dict
tf.placeholder 用于将普通类型,转化为 tensor 类型feed_dict 表示投喂字典,格式为 {tensor_type: value},其中 tensor_type 表示 tensor 类型,value 表示对应的值,用于具体的计算
softmax_data = [0.7, 0.2, 0.1]
one_hot_data = [1.0, 0.0, 0.0]
# 将 float 类型转化为 tensor 类型
softmax = tf.placeholder(tf.float32)
one_hot = tf.placeholder(tf.float32)
# TODO: Print cross entropy from session
# 传给 tf.multiply 的参数是两个 tensor 类型,而不是具体的值,
# 具体的值在 sess.run() 时,在 feed_dict 中提供
cross_entropy = -tf.reduce_sum(tf.multiply(one_hot, tf.log(softmax)))
with tf.Session() as sess:
# cross_entropy 需要两个类型的数据,在 feed_dict 中提供了
print(sess.run(cross_entropy, feed_dict={softmax: softmax_data, one_hot: one_hot_data}))
按:tf 是一个
类型转换器(tf.placeholder()),
函数提供器(tf.reduce_sum,tf.multiply,tf.log),
线程提供器(tf.Session)
tf.Variable
tf.Variable用于创建一个可变 tensor,初始值可以被改变。该 tensor 把它的状态存在可变 tensor 里,使用 tf.global_variables_initializer() 来初始化。
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
用 tf.Variable类可以让我们改变权重和偏差,但还是需要选择一个初始值。从正态分布中取随机数来初始化权重是个好习惯。
weights = tf.Variables(tf.truncated_normal((n_features, n_labels)))
将偏差简单得设为 0,或者用随机数
bias = tf.Variable(tf.zeros(n_labels))
# 或者
bias =tf.Variable(tf.random_normal([n_class]))
按:对于分类问题,从训练样本(X, y) 到 权重参数(W, b) 之间的映射关系如下:
X 的特征数为 n_features = X.shape[1],y 的取值空间为 n_labels = y.unique(),则
weights.shape == [n_features, y.unique()];
bias.shape == (y_unique(), )
来源:CSDN
作者:Linky1990
链接:https://blog.csdn.net/liangjiu2009/article/details/103421898