张量流密集层和ReLU层导致分段fau

2024-03-28 16:48:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用张量流创建一个神经网络。 我有一些助手函数在帮助.py文件:

import tensorflow as tf
import numpy as np

from tensorflow.examples.tutorials.mnist import input_data

def read_mnist(folder_path="MNIST_data/"):
    return input_data.read_data_sets(folder_path, one_hot=True)

def build_training(y_labels, y_output, learning_rate=0.5):
    # Define loss function
    loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_labels, logits=y_output))
    #train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)
    train_step = tf.train.AdamOptimizer(1e-4).minimize(loss)

    # Calculate accuracy
    correct_prediction = tf.equal(tf.argmax(y_output,1), tf.argmax(y_labels,1))
    accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
    return train_step, accuracy

def train_test_model(mnist, x_input, y_labels, accuracy, train_step, steps=1000, batch=100):
    sess = tf.InteractiveSession()
    sess.run(tf.global_variables_initializer())
    for i in range(steps):
      input_batch, labels_batch = mnist.train.next_batch(batch)
      feed_dict = {x_input: input_batch, y_labels: labels_batch}

      if i%100 == 0:
        train_accuracy = accuracy.eval(feed_dict=feed_dict)
        print("Step %d, training batch accuracy %g"%(i, train_accuracy))

      train_step.run(feed_dict=feed_dict)

    print("The end of training!")

    print("Test accuracy: %g"%accuracy.eval(feed_dict={x_input: mnist.test.images, y_labels: mnist.test.labels}))

然后我试着用它来训练网络。 首先,我使用非常简单的1输出层:

import help
import tensorflow as tf
import numpy as np

# Read mnist data
mnist = help.read_mnist()

image_size = 28
labels_size = 10

# Input layer - flattened images
x_input = tf.placeholder(tf.float32, [None, image_size*image_size])
y_labels = tf.placeholder(tf.float32, [None, labels_size])

# Layers:
# - Input
# - Output (Dense)

# Output dense layer
y_output = tf.layers.dense(inputs=x_input, units=labels_size)

# Define training
train_step, accuracy = help.build_training(y_labels, y_output)

# Run the training & test
help.train_test_model(mnist, x_input, y_labels, accuracy, train_step)

然后我添加另一个ReLU层:

# Hidden Layer
hidden = tf.layers.dense(inputs=x_input, units=hidden_size, activation=tf.nn.relu)

# Output dense layer
y_output = tf.layers.dense(inputs=hidden, units=labels_size)

我两次都有切分错误。 我尝试了一些我在网上找到的东西,比如重新排序numpy和tensorflow导入子句,把帮助.py与网络架构和训练过程相同的文件中的代码或增加docker映像的内存。什么都没用。你知道吗

有人能帮忙吗?你知道吗


Tags: importinputoutputdatasizelabelstffeed