【发布时间】:2020-10-27 06:55:26
【问题描述】:
所以假设我有x_train 和y_train,它们是数组,并且该数组的每个元素都是一个数据点(以数组形式)(所以x_train 将采用x_train[i][j] 的形式)。所以x_train[0] 代表训练集中的第一个数据点(以数组形式),假设我想创建一个简单的回归
所以我写了这个
input = tf.placeholder(tf.float32, shape=[len(data[0]),None])
target = tf.placeholder(tf.flaot32, shape=[len(data[0]),None])
network = tf.layers.Dense(10, tf.keras.activations.relu)(input)
network = tf.layers.BatchNormalization()(network)
network = tf.layers.Dense(10,tf.keras.activations.relu)(network)
network = tf.layers.BatchNormalization()(network)
network = tf.layers.Dense(10,tf.keras.activations.linear)(network)
cost = tf.reduce_mean((target - network)**2)
optimizer = tf.train.AdamOptimizer().minimize(cost)
with tf.Session() as sess:
for epoch in range(1000):
_, val = sess.run([optimizer,cost], feed_dict={input: x_train, target: y_train})
print(val)
但这是正确的吗?我不确定占位符的尺寸是否匹配。当我尝试运行此代码时, 我收到错误消息
ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`.
所以我尝试的是交换占位符的尺寸大小的位置,所以 改变的占位符是
input = tf.placeholder(tf.float32, shape=[None,len(data[0])])
target = tf.placeholder(tf.float32, shape=[None,len(data[0])])
但是有了这些,我就会收到错误消息
tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value dense/bias
[[{{node dense/bias/read}}]]
【问题讨论】:
-
如果你想使用
Dense层,你不能有输入维度None。这就是第一个错误。为避免第二个错误,请将tf.global_variables_initializer().run()作为with tf.Session() as sess:上下文中的第一行运行。
标签: python tensorflow keras neural-network