Tensorflow - 图表已完成,无法修改

时间:2017-10-19 20:54:22

标签: python numpy machine-learning tensorflow

我正在尝试启动分布式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_batchesx_train

这是我得到的错误:

y_train

任何帮助都将受到高度赞赏! 感谢

1 个答案:

答案 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内没有使用张量。