我正在尝试启动分布式Tensorflow并收到以下错误。 我的代码如下所示:
public class ListAdapterGrupat2 extends RecyclerView.Adapter<ListAdapterGrupat2.ViewHolder> {
public ListAdapterGrupat2(Context context, ArrayList<CustomObject> arrayList, Class<?> cls) {
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_programarigrupat, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
CustomObject obj = arrayList.get(position);
holder.item2.setText(obj.getItem2());
}
当我收到错误时,sv = tf.train.Supervisor(is_chief=(task_index == 0), logdir="/tmp/train_logs", init_op=init_op,
summary_op=summary_op, saver=saver, global_step=global_step, save_model_secs=600)
with sv.managed_session(server.target) as sess:
step = 0
while not sv.should_stop() and step < nnc.steps:
mini_batches = random_mini_batches(x_train, y_train, mini_batch_size)
for mini_batch in mini_batches:
(batch_x, batch_y) = mini_batch
_, step = sess.run([train_op, global_step], feed_dict={x: batch_x, y: batch_y})
函数失败了。
但我完全不明白为什么和为什么。 random_mini_batches
函数是一个用纯python + numpy编写的函数,没有任何与TensorFlow相关的函数。之前没有使用random_mini_batches
和x_train
。
这是我得到的错误:
y_train
任何帮助都将受到高度赞赏! 感谢
答案 0 :(得分:1)
这不是你的问题,但我认为mini_batch_size
是一个恒定的张量。虽然random_mini_batches
是纯粹的python和numpy,tensorflow overloads很多有张量的运算符,所以这一行
num_complete_minibatches = int(math.floor(m / mini_batch_size))
事实上,对张量执行__div__
操作,这也迫使m
转换为张量。但是tf.train.Supervisor()
强制图表完成,即不能再创建节点,因此转换失败。
解决方法是使mini_batch_size
成为普通常量,并确保random_mini_batches
内没有使用张量。